在 C++03 中,不可能按值返回具有私有非定义复制构造函数的类的对象:
struct A { A(int x) { ... } private: A(A const&); };
A f() {
return A(10); // error!
return 10; // error too!
}
我想知道,C++11 中是否解除了此限制,使得可以为没有用于复制或移动的构造函数的类编写具有类类型返回类型的函数?我记得允许函数的调用者使用新返回的对象可能很有用,但他们无法复制该值并将其存储在某个地方。
这是它的工作原理
A f() {
return { 10 };
}
即使这样也有效A
没有工作副本或移动构造函数,也没有其他可以复制或移动的构造函数A
!
为了利用 C++11 的这一功能,构造函数(采用int
在这种情况下)必须是非明确的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)