第十二章 C++PrimerPlus 类和动态内存分配

1、类的静态成员的特点:无论是创建多少对象,程序都只创建一个静态变量的副本。也就是说,类的所有对象共享一个静态成员。

2.类的定义只是声明,并不为其中的成员分配空间。作为声明语句,末尾要有分号。

3.设计的类中,C++提供下面这些成员函数:

   1)默认构造函数,如果没有定义

       只能有一个默认构造函数

   2)默认析构函数,如果没有定义

         释放统一内存两次可能会引起不必要的麻烦

   3)复制构造函数,如果没有定义

      用于将一个对象复制到新创建的对象中。原型如下:

      Class_name(const Class_name &);  这样的构造函数在执行Class_name A = B;时会被调用。注意,每当程序员生成了对象副本时,编译器都将调用复制构造函数。默认的复制构造函数只会逐个复制非静态成员,当类中包含了使用new初始化的指针成员,应当定义一个复制构造函数,以复制指向的数据,而不是指针,这被称为深度复制。(只复制指针,不复制内容,被称为浅复制)

   4)赋值运算符,如果没有定义

     下面的语句会调用复制运算符,Class_name A ; A = B;注意赋值运算符的原型如下:Class_name & Class_name::operator=(const Class_name &);注意系统默认的赋值运算符和复制运算符都是浅拷贝的。

   5)地址运算符,如果没有定义

       与我们的初衷相同,使用系统默认的即可

4、不能通过对象调用静态成员函数,静态成员函数甚至不可以使用this指针调用。如果静态成员函数在公共部分声明,可以使用类型::的方式调用。因为静态成员函数不与特定的对象相关联,因此只能使用静态数据成员。

5、在构造函数中使用new时应注意的事项:

第十二章 C++PrimerPlus 类和动态内存分配

第十二章 C++PrimerPlus 类和动态内存分配

6、如果类的成员有常量,在构造函数对其初始化时,则需要使用c++提供的一种特殊的语法完成。这种方法叫做初始化列表,这种语法只能在构造函数中使用。第十二章 C++PrimerPlus 类和动态内存分配