成员变量必须在构造函数的初始化列表中完成初始化。Smart pointer members minimize dependencies while allowing exception safety。
通过以指针存储成员变量的方法最小化依赖
当成员变量的头文件非常大或者非常复杂;或者当你有大量的数据成员,并且不想减慢编译速度和强化相互依赖时。你会怎么做?简单来说就是将成员变量保存为指针形式,并用在类的构造函数中使用new为其分配空间。(在某种特殊的情况下,可用引用形式的成员变量代替)。同样要确保在析构函数中删除它们。下面是一段雏形代码。
// User.h
class PointerMember;
class RefParam;
class User
{
public:
User( const RefParam &inParam );
virtual ~User();
private:
PointerMember *mPointerMember;
};
// User.cpp
#include "User.h"
User::User( const RefParam &inParam )
: mPointerMember( new PointerMember( inParam ) )
{
return;
}
User::~User()
{
delete mPointerMember;
return;
}