- 主题:在容纳函数返回的对象时,const T& 和 T 有啥区别?
理论上第二个会调用拷贝构造函数,深拷贝
作为返回值有时候会编译器优化什么的
【 在 hgoldfish 的大作中提到: 】
: 弱问,在以下代码里面:
: const ReloadLog &rlog = reload();
: 和写成
: ...................
--
FROM 111.194.200.*
多半是个return m_reloadLog;
return 临时变量的引用是非法操作
【 在 MyWorkLife 的大作中提到: 】
: 应该没啥区别
: 开优化以后都能避免额外的拷贝
: 不开的话应该下面那个可能会多一个拷贝构造
: ...................
--
FROM 111.194.200.*
你的意思是这样行?
哈哈
【 在 MyWorkLife 的大作中提到: 】
: 这里显然是从函数返回一个临时对象
: 然后绑定到一个const引用
: 你的意思这样不行?
: ...................
--
FROM 111.194.200.*
搜一下-Wreturn-local-addr
https://zhuanlan.zhihu.com/p/618070734
【 在 MyWorkLife 的大作中提到: 】
: 你不懂c++,鉴定完毕
--
FROM 221.219.211.*
public:
ReloadLog reload();
const ReloadLog &rlog = reload();
我也觉得这种用法是一种非常规用法
从逻辑上c++是不设计这种语义的支持的
严格上来说是有歧义的
虽然可能编译器能通过,并不推荐这种用法
这种声明正常应该使用的模式应该还是这样
ReloadLog rlog = reload();
【 在 poggy 的大作中提到: 】
: 我也觉得, 无论返回的是临时变量还是临时返回值, 返回临时变量的引用都不是一个正确的方式,
: 虽然, 也未必会野指针。
: 除非你显示的提供移动拷贝构造函数。 然后使用std::move。
: ...................
--
FROM 111.194.202.*
你懂个啥?spec的四种写法?
就是你这种spec专家太多了,c++ 才落个这种地步
【 在 MyWorkLife 的大作中提到: 】
: 不懂c++就别在这里大放厥词了
: 好歹你也去翻下spec
--
FROM 111.194.202.*
我说的是c++不行吗?
我说的是你不行
理解问题只知道咬文嚼字
纠结细枝末节,而忽略其本质
c++的确也有问题, 它的问题就是容易招惹你这种只会纸上谈兵的程序员
【 在 MyWorkLife 的大作中提到: 】
: 那你为什么不去自创一个f*k c++呢?
: 在这里bb啥
--
FROM 111.194.202.*