注册 登录
编程论坛 C++教室

拷贝构造函数问题

zzt_428 发布于 2008-09-01 20:27, 584 次点击
书中说,,拷贝构造函数三种情况下调用:
1.定义一个对象,并且将其初始化为另一个对象的时候.
2.函数将对象作为参数传递的时候.
3.函数返回一个对象的时候.
请教各位,下面这种情况,会不会调用拷贝构造函数?
class StringBad
{
   //.....
};

int main()
{
   StringBad headline("xxdewwwg");
   //....
   StringBad knot;
   knot=headline;    //这里会调用拷贝构造函数吗?
}
5 回复
#2
smarpkey2008-09-01 21:24
不会调用拷贝构造函数,调用的是operator =
#3
zzt_4282008-09-02 09:44
@@@@
楼上说对了!
#4
zhuerhua2008-09-02 15:49
楼主应该看一下拷贝构造函数的原型.好好理解一下
#5
blueboy820062008-09-02 15:59
[bo][un]zzt_428[/un] 在 2008-9-1 20:27 的发言:[/bo]

1.定义一个对象,并且将其初始化为另一个对象的时候.

其实,就是理解这个"初始化"  不是赋值...
#6
zzt_4282008-09-02 20:49
总结
感谢各位的指点!我知道拷贝构造函数的原型 是  ClassName(ClassName &cn);
我认为是不应该调用构造函数的,应该调用重载的赋值操作符.只不过书上写的错了,我疑惑了一下.顺便提醒一下,上面代码如果改成:
StringBad knot=headline;
或则
StringBad knot(headline);
的话,那么调用的是拷贝构造函数,同时也有可能调用重载入的操作符哦.
1