1、名字必须在使用之前进行定义。而且,一旦一个名字被用作类型名,该名字就不能被重复定义
例子:typedef double Money;
class Account {
public:
Money balance() { return bal; } // uses global definition of Money
private:
// error: cannot change meaning of Money
typedef long double Money;
Money bal;
// ...
};
2、构造函数的工作是保证每个对象的数据成员具有合适的初始值
3、const 对象只能使用 const 成员
4、与任何其他函数一样,构造函数具有名字、形参表和函数体。与其他函数不同的是,构造函数也可以包含一个构造函数初始化列表。
例子:Sales_item::Sales_item(const string &book):
isbn(book), units_sold(0), revenue(0.0) { }
5、不管成员是否在构造函数初始化列表中显式初始化,类类型的数据成员总是在初始化阶段初始化。初始化发生在计算阶段开始之前。
6、当构造函数被声明 explicit 时,编译器将不使用它作为转换操作符。