c++隐式的类类型转换问题
巴扎黑
巴扎黑 2017-04-17 12:08:43
[C++讨论组]

这是书中的一道题目,为什么就combine2不能转换,而combine1和3就没问题?

#include <string>
using namespace std;
class Sales_data {
public:
    Sales_data() = default;
    Sales_data(const string& str) :data(str) {}

    Sales_data &combine1(Sales_data a) {}
    Sales_data &combine2(Sales_data& a) {}
    Sales_data &combine3(const Sales_data& a)const {}
private:
    string data;
};
int main() 
{
    string str = "hello";
    Sales_data item("9-999-99999-9");
    item.combine1(str);
    item.combine2(str);//error:无法将参数 1 从“std::string”转换为“Sales_data &”
    item.combine3(str);
}

巴扎黑
巴扎黑

全部回复(2)
ringa_lee

隐式转换中产生临时对象,是右值,而
引用只能绑定到左值,const引用还能绑定到右值

PHP中文网

不妨再看一下《快速了解C/C++的左值和右值》
http://segmentfault.com/a/1190000003793498

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

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