构造函数的定义必须在类体内吗?
展开全部
你说的是“定义”(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())
{
}
这样就减少了依赖,减少了耦合性。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |