您的位置:首页 > 编程语言 > C语言/C++

C++ 拷贝构造函数的调用

2008-10-22 19:20 309 查看
拷贝构造函数主要在以下三种情况下起初始化作用:1. 在声明语句中用一个对象初始化另一个对象;
2. 将一个对象作为参数按值调用方式传递给另一个对象时生成对象副本;
3. 生成一个临时对象作为函数的返回结果。(这种情况只有在windwos下是真的,我只是在windos xp + VC 6.0)

以下面的代码为例:

// Tt.cpp : Defines the entry point for the console application.
//

#include <iostream.h>

class CopyClassTest{
public:
CopyClassTest(){
cout << "Constructor" << endl;
}

CopyClassTest(CopyClassTest const &a){
cout << "Copy Constructor" << endl;
}
};

void processCall(CopyClassTest a){
cout << "process call 1" << endl;
}

CopyClassTest processCall2(){
cout << "process call 2" << endl;
CopyClassTest temp;
return temp;
}

int main(){
CopyClassTest one;
CopyClassTest two = one;

processCall(one);
processCall2();
return 0;
}
在windows xp + VC 6.0的环境下,结果是:
Constructor //对应的是main函数中的CopyClassTest one;
Copy Constructor//对应的是main函数中的CopyClassTest two = one;
Copy Constructor//对应的是main函数中的processCall(one); 函数调用要生成一个临时变量,所以调用了copy constructor
process call 1
process call 2
Constructor//对应的是processCall2中的CopyClassTest temp;
Copy Constructor//对应的是processCall2中的return temp;

在Linux localhost.localdomain 2.6.9-78.ELsmp #1 SMP Wed Jul 9 15:39:47 EDT 2008 i686 i686 i386 GNU/Linux + gcc version 3.4.6 20060404 (Red Hat 3.4.6-10)环境下,结果是:
Constructor
Copy Constructor
Copy Constructor
process call 1
process call 2
Constructor
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: