构造赋值和析构-*重构*改善既有代码的设计(带完整书签)

时间:2024-06-27 17:56:07
【文件属性】:

文件名称:构造赋值和析构-*重构*改善既有代码的设计(带完整书签)

文件大小:1.28MB

文件格式:PDF

更新时间:2024-06-27 17:56:07

C++ 编程规范

4.2 构造、赋值和析构 规则4.4 包含成员变量的类,须定义构造函数或者默认构造函数 说明:如果类有成员变量,没有定义构造函数,又没有定义默认构造函数,编译器将自动生成一个构 造函数,但编译器生成的构造函数并不会对成员变量进行初始化,对象状态处于一种不确定性。 例外:如果这个类是从另一个类继承下来,且没有增加成员变量,则不用提供默认构造函数 示例:如下代码没有构造函数,私有数据成员无法初始化: class CMessage { public: void ProcessOutMsg() { //… } private: unsigned int msgid; unsigned int msglen; unsigned char *msgbuffer; }; CMessage msg; //msg成员变量没有初始化 msg.ProcessOutMsg(); //后续使用存在隐患 //因此,有必要定义默认构造函数,如下: class CMessage { public: CMessage (): msgid(0), msglen (0), msgbuffer (NULL) { } //... }; 规则4.5 为避免隐式转换,将单参数构造函数声明为explicit


网友评论