你对标准的熟悉程度有待提高啊
https://en.cppreference.com/w/cpp/language/copy_elision
Under the following circumstances, the compilers are required to omit the copy and move construction of class objects, even if the copy/move constructor and the destructor have observable side-effects.
- In the initialization of an object, when the initializer expression is a prv
alue of the same class type (ignoring cv-qualification) as the variable type
:
T x = T(T(f())); // only one call to default constructor of T, to initialize
x
【 在 here080 (hero080) 的大作中提到: 】
: 标 题: Re: 同事的C++代码
: 发信站: 水木社区 (Wed Oct 21 18:42:58 2020), 站内
:
: 不是。
: 这就是定义成显式调用ctor,跟X x(...);语义上完全等价。
: 【 在 MyWorkLife (我是谁) 的大作中提到: 】
: : 标 题: Re: 同事的C++代码
: : 发信站: 水木社区 (Wed Oct 21 18:02:43 2020), 站内
: :
: : X x = X(...);
: : 这种不是copy elision?
: :
: : 【 在 here080 (hero080) 的大作中提到: 】
: : : 标 题: Re: 同事的C++代码
: : : 发信站: 水木社区 (Wed Oct 21 03:27:23 2020), 站内
: : :
: : : 这个不是copy elision,这个就是调用ctor
: : : 【 在 MyWorkLife (我是谁) 的大作中提到: 】
: : : : 标 题: Re: 同事的C++代码
: : : : 发信站: 水木社区 (Tue Oct 20 14:05:50 2020), 站内
: : : :
: : : : 这种情况会做copy elision优化
: : : : 不会调copy ctor
: : : :
: : : : 【 在 fanci (大葡萄) 的大作中提到: 】
: : : : : 标 题: Re: 同事的C++代码
: : : : : 发信站: 水木社区 (Tue Oct 20 13:02:13 2020), 站内
: : : : :
: : : : : 多了一个拷贝构造,这倒罢了,有据可循,X还是X::X 就是个风格问题
: : : : :
: : : : : 【 在 here080 () 的大作中提到: 】
: : : : : : 我刚开始写C++时也喜欢写X x = X(...);
: : : : : : 【 在 lushan5436 (密如) 的大作中提到: 】
: : : : : --
: : : : : 发自xsmth (iOS版)
: : : : : --
: : : : :
: : : : : ※ 来源:·水木社区
http://m.newsmth.net·[FROM: 203.145.95.*]
: : : :
: : : :
: : : : --
: : : :
: : : : ※ 来源:·水木社区 newsmth.net·[FROM: 111.200.53.*]
: : :
: : :
: : : --
: : :
: : : ※ 来源:·水木社区 newsmth.net·[FROM: 76.126.252.*]
: :
: :
: : --
: :
: : ※ 来源:·水木社区 newsmth.net·[FROM: 111.200.53.*]
:
:
: --
:
: ※ 来源:·水木社区 newsmth.net·[FROM: 76.126.252.*]
--
FROM 111.200.53.*