对象是由类实例化得到的,由数据和行为组成,数据由对象的属性来表示,行为由对象的方法来表示。
(1)对象初始化——构造函数
构造函数用来完成对象的初始化,完成内存空间申请,给成员变量赋初值等工作。
其有如下几个特点:
(a)可重载(b)无返回值(c)构造函数是共有的
(2)默认构造函数有何特点
(a)创建对象时编译器自动创建和调用(b)无参数,函数体为空(c)仅当没有自定义构造函数时编译器才会自动创建
(3)如何拷贝构造函数
(a)对象以值方式传入函数体,即函数的形参是类的对象(实参传给形参时,调用拷贝构造函数)
(b)对象以值方式从函数返回,即函数返回值为对象。
(c)对象需要通过其他对象进行初始化
(4)深拷贝和浅拷贝有何区别
(a)当拷贝对象中包含其他对象的引用时,如果需要复制引用对象指向的内容,而不是引用(内存地址),则为深拷贝,否则为浅拷贝
(b)浅拷贝就是成员数据之间的赋值,当值拷贝时,两个对象拥有相同的资源;而深拷贝是先将资源复制一份,使对象拥有不同的资源,但是资源内容是相同的
(c)与浅拷贝不同,深拷贝在处理引用时,如果改变新对象内容将不会影响旧对象内容
(d)与深拷贝不同,浅拷贝资源释放后可能产生资源归属不清楚的情况,从而导致错误
(5)析构函数
特点:(a)不可重载(b)无返回值(c)没有参数
注意拷贝赋值函数调用时,存在局部对象,故而会自动调用析构函数。
(6)静态成员变量和静态成员函数
静态成员变量不是实例对象的一部分,是所有对象所共有的,因此它必须咋类的内部声明,在类的外部定义。
静态成员函数也不是实例对象的一部分,与非静态函数相比,有如下不同:
(a)不允许在静态成员函数中直接访问非静态成员变量
(b)不允许将静态成员函数定义为虚函数
参考书籍: 范立峰 李世欣 《你必须知道的222个C++语言问题》