首页 新闻 会员 周边

c++拷贝构造函数

0
[已关闭问题] 关闭于 2014-07-28 23:12

class CA

{

  public:CA(){cout<<"hello,world"<<endl;}

};

int main()

 {

   CA ca;

  CA cb=ca;

outout:

hello,world

疑问:

为什么只有一个helloworld 输出呀,from ca to cb的拷贝过程中,不是定义了cb吗,也应该输出一个helloworld 呀?请教

北冥飞鱼的主页 北冥飞鱼 | 初学一级 | 园豆:189
提问于:2013-09-29 12:26
< >
分享
所有回答(3)
3

晕,你知道给问题起个名字“拷贝构造函数”居然还用问么?

mian函数中第二句调用的是拷贝构造函数初始化cb的,这个拷贝构造函数是编译器合成的,并没有做任何信息输出的,并不是你显式定义的那个。你定义的那个是默认构造函数,是mian函数中第一条语句执行的构造函数。

拷贝构造函数是复制控制相关的一组东西。

xiarunliang | 园豆:202 (菜鸟二级) | 2013-09-29 14:27
0

  CA(const CA&){ cout<<" copy constructor, hello,world"<<endl; }
將這個加上, 就okay。

  CA cb=ca;  //執行到這裡,就會調用上面的函數,如果不寫,編譯器會幫你生成一個默認的。

mhgu | 园豆:206 (菜鸟二级) | 2013-10-30 16:13
0

CA ca;

 CA cb=ca;//调用拷贝构造函数,你没有定义自己的函数。

 

CA ca,cb;

cb=ca;//这样的话是赋值,这行不调用拷贝构造函数

浩荡乾坤 | 园豆:135 (初学一级) | 2013-11-17 03:23
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册