找回密码
 立即注册
收起左侧

QString S="123",怎么解释?

4
回复
6683
查看
[复制链接]
累计签到:2 天
连续签到:1 天
来源: 2016-11-24 18:44:49 显示全部楼层 |阅读模式
1Qter豆
1,QString S="123";//这样写不理解,这意味着“123”是QString 类型,为什么“123”就能默认成QString类型呢
2,QString S( "123" );//这样写懂  ,直接调用构造函数

回复

使用道具 举报

累计签到:955 天
连续签到:1 天
2016-11-25 08:59:47 显示全部楼层
这是一个赋值过程,双引号修饰的字符串类型数据,也会调用构造函数
回复

使用道具 举报

累计签到:10 天
连续签到:1 天
2016-11-25 16:58:19 显示全部楼层
构造函数如果不加explicit会对参数进行隐含的类型转换,如
class test {
public:
    test(int val) { m_val = val; }
   
private:
    int m_val;
};
这个时候调用test mytest = 1;是可以的
如果把构造函数改成 explicit test(int val) { m_val = val; }那就不行了
回复

使用道具 举报

累计签到:2 天
连续签到:1 天
2016-11-25 19:15:20 显示全部楼层
khedive 发表于 2016-11-25 16:58
构造函数如果不加explicit会对参数进行隐含的类型转换,如
class test {
public:

谢谢,你的答案,这个是不是也能说属于浅拷贝的内容。
PS :你也喜欢棋魂啊
回复

使用道具 举报

累计签到:10 天
连续签到:1 天
2016-12-20 13:54:25 显示全部楼层
zbcq520@163.com 发表于 2016-11-25 19:15
谢谢,你的答案,这个是不是也能说属于浅拷贝的内容。
PS :你也喜欢棋魂啊  ...

这个赋值应该是不需要经过拷贝的,只是调用一次构造函数,也许不同的编译器有不同的实现
《棋魂》是个值得纪念的回忆
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了