原标题:高效学 C++|复制构造函数
当没有编写复制构造函数时,编译器会自动提供一个默认的复制构造函数。对于派生类来说,该默认的复制构造函数会自动调用基类的复制构造函数。因此,如果派生类的新增成员中没有使用堆内存,则不必为其实现复制构造函数;否则,就必须为其编写复制构造函数。
01
复制构造函数
造成内存泄露的派生类的析构过程如例6.3所示。
【例6.3】造成内存泄漏的派生类的析构过程。
1.#include<iostream>
2.using namespace std;
3.class Base
4.{
5.int* p;
6.public:
7.Base()
8.{
9.p = newint[ 1024];
10.for( inti = 0; i < 1024; i++)
11.p[i] = i;
12.cout << “class Base的构造函数被调用…”<< endl;
当没有编写复制构造函数时,编译器会自动提供一个默认的复制构造函数。对于派生类来说,该默认的复制构造函数会自动调用基类的复制构造函数。因此,如果派生类的新增成员中没有使用堆内存,则不必为其实现复制构造函数;否则,就必须为其编写复制构造函数。
01
复制构造函数
造成内存泄露的派生类的析构过程如例6.3所示。
【例6.3】造成内存泄漏的派生类的析构过程。
1.#include<iostream>
2.using namespace std;
3.class Base
4.{
5.int* p;
6.public:
7.Base()
8.{
9.p = newint[ 1024];
10.for( inti = 0; i < 1024; i++)
11.p[i] = i;
责任编辑: