Chapter12 类和动态内存分配
动态内存和类
静态类成员
对于静态类成员,不能在类的声明中初始化,因为类声明位于头文件中,如果头文件包含在其他多个文件中,则会进行多次初始化而产生错误。
存在一种例外情况:如果静态成员是 const 的整型或者枚举,则可以在类声明中初始化。
特殊成员函数
C++自动提供了下述成员函数:
- 默认构造函数,如果没有定义构造函数
- 默认析构函数,如果没有定义
- 复制构造函数,如果没有定义
- 赋值运算符,如果没有定义
- 地址运算符,如果没有定义
复制构造函数
复制构造函数用于将一个对象复制到新创建的对象中,常用于初始化过程中而并不是常规赋值过程中。其原型通常如下:
Class_name(const Class_name &);
每当函数按值传递对象或函数返回对象时,都将使用复制构造函数。
复制构造函数为浅拷贝。
在构造函数中使用 new 的注意事项
- 如果在构造函数中使用 new ,则在析构函数中需使用 delete
- new 和 delete 必须兼容。 new 对应 delete ,new[] 对应 delete[]
- 如果有多个构造函数,必须以相同的方式使用 new,因为只有一个析构函数
参考书目 : C++ Primer Plus 第6版