mordorwww 发表于 2016-06-20 16:58

移动构造和拷贝构造的奇怪问题

int main() {
MyString bb= MyString("Hellomove");
MyString a("a");
MyString b= a;
}


MyString b= a;测试证明, 这句话调用的是拷贝构造,当然之前先为a调用了字符串参数的构造函数,再为b调用拷贝构造

那么

MyString bb= MyString("Hellomove");这句话为什么没有调用移动构造?而只调用了字符串参数的构造函数?按照前面的测试结果要对bb调用一个构造函数啊,好像根本就没调用构造函数

cokeboL 发表于 2016-06-20 17:38

移动构造这词还是头回听说,以前都是听说叫做赋值构造

MyString bb= MyString("Hellomove");    这块初始化构造,本来就没有对象作为参数的必要,如果真先构造个再执行拷贝或者赋值,那编译器才是傻到家

lxyscls 发表于 2016-06-20 17:39

王八的屁股,龟腚?

mordorwww 发表于 2016-06-20 18:02

cokeboL 发表于 2016-06-20 17:38 static/image/common/back.gif
移动构造这词还是头回听说,以前都是听说叫做赋值构造

MyString bb= MyString("Hellomove");    这块初始 ...


c++ 11,拷贝构造 移动构造
               拷贝赋值 移动赋值

坑大

cokeboL 发表于 2016-06-21 09:51

回复 4# mordorwww


    哎呦我勒个去,更加坚定了我“珍爱生命远离c++”的信仰!:dizzy:

cokeboL 发表于 2016-06-21 09:52

这两天好运气啊又捡到个徽章

mordorwww 发表于 2016-06-21 10:55

本帖最后由 mordorwww 于 2016-06-21 10:59 编辑

cokeboL 发表于 2016-06-21 09:51 static/image/common/back.gif
回复 4# mordorwww




你搞java?

MyString e(MyString("hehe")); 这个特么只调用一次构造函数, 因为构造函数没有返回值么?那为何编译又不报错

cokeboL 发表于 2016-06-21 11:07

回复 7# mordorwww


不搞java。。。

是不是编译器优化掉了
页: [1]
查看完整版本: 移动构造和拷贝构造的奇怪问题