高效学 C++|复制构造函数

原标题:高效学 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;

12.cout << “class Base的构造函数被调用…”<< endl;

责任编辑:

Thenews.cc