C++学习大纲:拷贝构造函数


C++学习大纲:拷贝构造函数

C++ 拷贝构造函数

1. 定义

(const &);

class A

{

int x,y;

public:

A();

A(const A& a)

{

x = a.x+1;

y = a.y+1;

}

}

其中,const是为了防止在函数中修改实参对象,可以省略。

拷贝构造函数也可以带有其他参数,但这些参数必须要有默认值。

2. 调用

下面三种情况将会调用拷贝构造函数:

1)定义对象

2)把对象作为值参数传递给函数

3)把对象作为返回值

如果在类定义中没有给出拷贝构造函数,则编译程序将会为其提供一个隐式的拷贝构造函数,此时的拷贝构造函数跟Java中的克隆函数有点像。

当类定义中包含成员对象,成员对象的拷贝初始化可由成员对象类的拷贝构造函数来实现。

系统提供的隐式拷贝构造函数会去调用成员对象的拷贝构造函数,而自定义的拷贝构造函数则不会自动去调用成员的拷贝构造函数,这时,必须要在拷贝构造函数的成员初始化表中显式指出。

class A

{

}

class B

{

int z;

A a;

public:

B();

B(const B& b): a(b.a)

{

z = b.z;

}

}

————————————————


C++学习大纲:拷贝构造函数

C++拷贝构造函数(深拷贝,浅拷贝)

对于普通类型的对象来说,它们之间的复制是很简单的,例如:
int a=88;
int b=a;
而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量。下面看一个类对象拷贝的简单例子。

#include <iostream>

using namespace std;

class CExample {

private:

 int a;

public:

 CExample(int b)

 { a=b;}

 void Show ()

 {

cout<


分享到:


相關文章: