C++ Primer Plus Chapter12

Chapter12 类和动态内存分配

动态内存和类

静态类成员

对于静态类成员,不能在类的声明中初始化,因为类声明位于头文件中,如果头文件包含在其他多个文件中,则会进行多次初始化而产生错误。

存在一种例外情况:如果静态成员是 const 的整型或者枚举,则可以在类声明中初始化。

特殊成员函数

C++自动提供了下述成员函数:

  1. 默认构造函数,如果没有定义构造函数
  2. 默认析构函数,如果没有定义
  3. 复制构造函数,如果没有定义
  4. 赋值运算符,如果没有定义
  5. 地址运算符,如果没有定义

复制构造函数

复制构造函数用于将一个对象复制到新创建的对象中,常用于初始化过程中而并不是常规赋值过程中。其原型通常如下:

Class_name(const Class_name &);

每当函数按值传递对象或函数返回对象时,都将使用复制构造函数。

复制构造函数为浅拷贝。

在构造函数中使用 new 的注意事项

  1. 如果在构造函数中使用 new ,则在析构函数中需使用 delete
  2. newdelete 必须兼容。 new 对应 deletenew[] 对应 delete[]
  3. 如果有多个构造函数,必须以相同的方式使用 new,因为只有一个析构函数

参考书目C++ Primer Plus 第6版