c++移动构造函数什么时候会被调用?
黄舟
黄舟 2017-04-17 14:32:10
[C++讨论组]
class x{
public:
    x( moveClass&& item) {
        std::cout << 123 << std::endl;
    }
    
    x() = default;
};


int main(){
    x(x());
}

如上的代码, 不应该输出123吗, 为什么什么都没有输出... 这种情况到底算调用了哪种构造方法.

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

全部回复(2)
阿神
#include <iostream>
#include <utility>

class X {
public:
    X( X&& item) {
        std::cout << 123 << std::endl;
    }

    X() = default;
};


int main() {
    X(X()); // X(std::move(X())); 这个会输出 123
}

copy assignment operator 应该这么写:

class X {
    X operator=( const X &rhs ) {
        // ...
    }
}
黄舟

试试x{x{}}

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号