c++ primer plus第十二章-动态内存和类,复制构造函数
1)类声明没有为字符串本身分配存储空间,而是在构造函数中使用new来为字符串分配空间。这避免了在类声明中预先定义字符串的长度。
2)静态成员有一个特点,无论创建多少个对象,程序都是只创建一个静态变量副本。也就是说,类的所有对象共享一个静态成员,就像家中的电话可供全部人使用一样。
而且不能在类声明中初始化静态成员变量,这是因为声明描述了如何分配内存,但并不分配内存。对于静态成员,可以在类声明之外使用单独的语句来进行初始化,这是因为静态类成员是单独存储的,而不是对象的组成部分。而且要注意:初始化语句指出了类型,并使用了作用域运算符,但没有使用关键字static。
3)注意:静态数据成员在类声明中声明,在包含类方法的文件中初始化。初始化时使用作用域运算符来指出静态成员所属的类。但如果静态成员是const整数类型或枚举类型,则可以在类声明中初始化。
4)默认构造函数:编译器将提供一个不接受任何参数,也不执行任何操作的构造函数(默认的默认构造函数),这是因为创建对象时总会调用构造函数。
Klunk::Klunk(){ }
带参数的构造函数也可以是默认构造函数,只要所有参数都有默认值。
Klunk(int n=0 ){ klunk_ct = n; }
但是只能有一个默认构造函数。