google C++风格指南笔记(二):类

google C++风格指南笔记(二):类
1. 构造函数的职责
   如果对象需要进行有意义的(non-trival)初始化,考虑使用明确的init()的方法来进行初始化操作。因为如果在构造函数中进行有意义的初始化操作,一旦这些操作失败,对象将进入不确定的状态。symbian编程中广泛使用一种称为“两阶段构造法”的方法来解决这个问题,值得借鉴。

2. 默认构造函数
   如果一个类定义了很多数据成员,那么就自己写一个构造函数,因为如果不自己写,编译器会产生一个垃圾的默认构造函数,这应该不是你想要的。
   new 一个不带参数的类对象时, 会调用类的默认构造函数. 用 new[] 创建数组时,默认构造函数则总是被调用。保证对象的构造要有意义。

3. 对单个参数的构造函数使用explicit关键字。
   如果C++的构造函数只有一个参数,那么就会有一个对应的“隐式转换”。即:将该构造函数中参数的数据类型对应的数据转换为该类的对象。这么说有点绕,举个例子就明白了:
class  IntCls
{
public :
   IntCls(
int  m);
   
};

IntCls ic 
=   10 //  Convert 10 to IntCls

//  convert:
//  IntCls tmp = IntCls(10);
//  ic = tmp

4.拷贝构造函数
  仅在代码中需要拷贝一个类对象的时候使用拷贝构造函数。大部分类并不需要可拷贝, 也不需要一个拷贝构造函数或重载赋值运算符。
 
//  禁止使用拷贝构造函数和 operator= 赋值操作的宏
//  应该类的 private: 中使用

#define  DISALLOW_COPY_AND_ASSIGN(TypeName) \
            TypeName(
const  TypeName & ); \
            
void   operator = ( const  TypeName & )
在class Foo 中:
class  Foo {
    
public :
        Foo(
int  f);
        
~ Foo();

    
private :
        DISALLOW_COPY_AND_ASSIGN(Foo);
};

5. 结构体
   仅当只有数据时使用 struct, 其它一概使用 class.

你可能感兴趣的:(google C++风格指南笔记(二):类)