1.为什么要引入构造函数和析构函数
对象的初始化是指对象数据成员的初始化,在使用对象前,一定要初始化
由于数据成员一般为私有的(private),所以不能直接赋值
对对象初始化有以下两种方法:类中提供一个普通成员函数来初始化,但是会造成使用上的不便(使用对象前必须显式调用该函数)和不安全(未调用初始化函数就使用对象)
当定义对象时,编译程序自动调用构造函数
析构函数的功能是当对象被撤消时,释放该对象占用的内存空间
析构函数的作用与构造函数正好相反,一般情况下,析构函数执行构造函数的逆操作
在对象消亡时,系统将自动调用析构函数,执行一些在对象撤消前必须执行的清理任务
类的公有、私有和保护成员之间的区别是什么
①私有成员private:私有成员是在类中被隐藏的部分,它往往是用来描述该类对象属性的一些数据成员,私有成员只能由本类的成员函数或某些特殊说明的函数(如第4章讲到的友员函数)访问,而类的外部根本就无法访问,实现了访问权限的有效控制,使数据得到有效的保护,有利于数据的隐藏,使内部数据不能被任意的访问和修改,也不会对该类以外的其余部分造成影响,使模块之间的相互作用被降低到最小
private成员若处于类声明中的第一部分,可省略关键字private
②公有成员public:公有成员对外是完全开放的,公有成员一般是成员函数,它提供了外部程序与类的接口功能,用户通过公有成员访问该类对象中的数据
③保护成员protected:只能由该类的成员函数,友元,公有派生类成员函数访问的成员
保护成员与私有成员在一般情况下含义相同,它们的区别体现在类的继承中对产生的新类的影响不同,具体内容将在第5章中介绍
缺省访问控制(未指定private、protected、public访问权限)时,系统认为是私有private成员
什么是拷贝构造函数,它何时被调用
拷贝构造函数的功能是用一个已有的