移动构造和拷贝构造的奇怪问题
int main() {MyString bb= MyString("Hellomove");
MyString a("a");
MyString b= a;
}
MyString b= a;测试证明, 这句话调用的是拷贝构造,当然之前先为a调用了字符串参数的构造函数,再为b调用拷贝构造
那么
MyString bb= MyString("Hellomove");这句话为什么没有调用移动构造?而只调用了字符串参数的构造函数?按照前面的测试结果要对bb调用一个构造函数啊,好像根本就没调用构造函数 移动构造这词还是头回听说,以前都是听说叫做赋值构造
MyString bb= MyString("Hellomove"); 这块初始化构造,本来就没有对象作为参数的必要,如果真先构造个再执行拷贝或者赋值,那编译器才是傻到家 王八的屁股,龟腚? cokeboL 发表于 2016-06-20 17:38 static/image/common/back.gif
移动构造这词还是头回听说,以前都是听说叫做赋值构造
MyString bb= MyString("Hellomove"); 这块初始 ...
c++ 11,拷贝构造 移动构造
拷贝赋值 移动赋值
坑大 回复 4# mordorwww
哎呦我勒个去,更加坚定了我“珍爱生命远离c++”的信仰!:dizzy: 这两天好运气啊又捡到个徽章 本帖最后由 mordorwww 于 2016-06-21 10:59 编辑
cokeboL 发表于 2016-06-21 09:51 static/image/common/back.gif
回复 4# mordorwww
你搞java?
MyString e(MyString("hehe")); 这个特么只调用一次构造函数, 因为构造函数没有返回值么?那为何编译又不报错 回复 7# mordorwww
不搞java。。。
是不是编译器优化掉了
页:
[1]