构造函数的定义必须在类体内吗?

 我来答
splashchaos
2014-10-21 · TA获得超过1.1万个赞
知道大有可为答主
回答量:3342
采纳率:0%
帮助的人:3621万
展开全部

你说的是“定义”(define)还是“声明”(declare)? 如果是“定义”,当然不是必须的。但C++编程,一般推荐,把构造函数(包括其他成员函数)的定义都放到class外,而且是另一个文件中。 这就是所谓的一个class,有两个文件(.h/.hpp和.cpp)文件。

对于小的应用,你在class内定义,没问题;但对於大一点的项目,都推荐define在class外,而且头文件和cpp文件分开。 这样的好处就是可减少编译时间和解决可能的互相依赖的情况。

比如你有一个class Automobile,里用到了另一个class Vehicle。

include "Vehicle.h"
class Automobile
{
  public:
    A(const Vehicle& vehicle) : m_vehicleType(vehicle.GetType()) {}
  private:
    int m_vehicleType;  
}

上面的Automobile严重依赖Vehicle, 如果Vehicle的定义改变了,Automobile部分也必须重新编译;而如果你分开:
automobile.h

class Vehicle;
class Automobile
{
  public:
    A(const Vehicle& vehicle);
  private:
    int m_vehicleType;  
}

然后在automobile.cpp

#include "Vehicle.h" 

Automobile::Automobile(const Vehicle &vehicle) : m_vehicleType(vehicle.GetType())
{
}

这样就减少了依赖,减少了耦合性

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式