首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

请问一个关于构造函数和拷贝构造函数的有关问题

2012-06-25 
请教一个关于构造函数和拷贝构造函数的问题。#include iostreamusing namespace stdclass Foo{public:Fo

请教一个关于构造函数和拷贝构造函数的问题。
#include <iostream>
using namespace std;

class Foo{
public:
Foo( int m=4){
cout<<m<<endl;
}
};

int main(){
Foo a(3);
Foo b(a);
return 0;
}
这个例子,按照我想的是应该输出3 3.因为定义了Foo的对象a。调用构造函数,输出3。。。

然后将a对象拷贝给b这个对象。。b也应该调用构造函数。。。可是输出的是3。。。请问下拷贝构造函数的详细过程。

[解决办法]
因为你没有定义类的数据成员,所以只输出一个3
[解决办法]
没有定义拷贝构造函数,编译器会生成一个缺省的拷贝构造函数,
会把每个成员拷贝过去
[解决办法]
这里没有用到动态内存分配,用默认的拷贝构造函数、复制操作符和折构函数就行了

Foo b(a) 应该等同于 Foo b = a 二者都是调用了默认拷贝构造函数。

Foo b; //invoke default constructor
b = a; //invoke default assignment operator
则是调用了默认赋值操作符

热点排行