1. 转换构造函数
1) 单个参数的构造函数
2) 将其他类型转换为类类型
3) 类的构造函数只有一个参数是非常危险的,因为编译器可以使用这种构造函数把参数的类型隐式转换为类类型
2. 赋值与初始化的区别
1) 在初始化语句中的等号不是运算符,编译器对这种表示方法有特殊的解释
2) 赋值:Test& Test::operator+(const Test& other);
运算符重载:
3. explicit关键字
1) 只提供给类的构造函数使用关键字
2) 编译器不会把声明为explicit的构造函数用于隐式转换,它只能在程序代码中显示创建对象。
explicit Test(int x);//使转换构造函数不生效
4. 构造函数初始化列表
推荐在构造函数初始化列表中进行初始化
构造函数的执行分为两个阶段:初始化段+普通计算段
5. 对象成员与初始化
6. const成员、引用成员的初始化
const成员、引用、对象成员(对象所对应的类没有默认构造函数)的初始化,只能在构造函数初始化列表中进行
7. 枚举对象适用与所有对象
需要常量时可以定义枚举成员
示例:
class Test
{
public:
enum Result
{
SUCCESS = 1,
FAILED = -1
};
};
枚举访问:Test::SUCCESS