本篇将介绍当对象成员包含动态成员时,需要对其初始化,拷贝,赋值,销毁等过程做出相应的设计。
啃书《C++ Primer Plus》 面向对象部分 动态内存管理(中) 动态对象的创建 重载new和delete
《动态内存管理》内容思维导图如下:
动态的成员
在对象的成员变量中,也可以使用动态的对象或者变量,这些动态成员为程序的设计提供了便利,却也暗藏风险。
创建与释放
一般来说,动态成员是通过引用或者指针进行使用和管理的。
我们通过下面的程序来说明动态成员的创建和释放
假设现在有类A和类B,A中包含三个成员:一个B类型引用,一个B类型指针,一个B类型对象
using namespace std;
class B
{
public:
B(){
cout << "the constructor in class B" << endl;}
~B(){
cout << "the destructor in class B" << endl;}
};
class A
{
public:
A():yb(*new B()) //引用必须使用初始化列表进行初始化
,b() //对象成员可以在初始化列表中指定调用的构造函数,也可以不适用初始化列表,默认调用无参构造函数
{
cout << "the constructor in class A" << endl;
pb = new B(); //指针可以不使用初始化列表初始化,也可以不再构造函数中指定指向对象
}
~