gpt4 book ai didi

c++ - 我们可以从函数中按值返回具有已删除/私有(private)复制/移动构造函数的对象吗?

转载 作者:IT老高 更新时间:2023-10-28 22:19:21 26 4
gpt4 key购买 nike

在 C++03 中,不可能按值返回具有私有(private)未定义复制构造函数的类的对象:

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)必须是非显式的。

关于c++ - 我们可以从函数中按值返回具有已删除/私有(private)复制/移动构造函数的对象吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7935639/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com