- 主题:在容纳函数返回的对象时,const T& 和 T 有啥区别?
【 在 hgoldfish 的大作中提到: 】
: 弱问,在以下代码里面:
: const ReloadLog &rlog = reload();
: 和写成
: ...................
如果rlog具有复杂构造的话,用第一个。在reload()里,要有可靠的内存分配。用毕需析构。
简单的int,long,用第二个。
--
修改:ylh1969 FROM 221.218.61.*
FROM 221.218.61.*
【 在 hgoldfish 的大作中提到: 】
: 有啥 C++ 的标准谈这个事吗?
: 我刚看了一下 godbolt, 如果不指定 -O 优化的话,前者会产生更多的指令其实。
:
前者是指针的另一种表达方式,称为引用。函数返回指针,比返回一个复杂构造容易多了。
最古老的C,甚至不支持返回结构,只能返回结构指针。现在虽然可以了,但是我还是坚持不这么用。
庞大的结构,在传入函数和返回时,会占用大量栈空间。喜欢玩无栈协程的,就要避免用栈。
--
修改:ylh1969 FROM 221.218.61.*
FROM 221.218.61.*
反汇编代码看看。
我估计是new出来一个,然后填返回值。
第二个是直接填返回值。
【 在 hgoldfish 的大作中提到: 】
: 不是啊。我定义的函数是:
: ReloadLog reload();
: 都是返回 ReloadLog 这个对象。
: ...................
--
修改:ylh1969 FROM 221.218.61.*
FROM 221.218.61.*