在 C++ 中的函数中返回匿名实例/值
Return an anonymous instance/value in functions in C++
我对C++函数的返回类型有疑问。
为什么return pair<int, int>(1, 1);
和return vector<int>(3, 3);
有效?我不应该事先创建一个本地实例 var 并将其作为返回值,就像返回 a 一样,因为return int 1;
不起作用。
// ...
int fun1() {
// return int 1;
int a = 1;
return a;
}
pair<int, int> fun2() {
return pair<int, int>(1, 1);
}
vector<int> fun3() {
return vector<int>(3, 3);
}
int main(){
cout << fun1() << endl;
cout << fun2().first << endl;
cout << fun3()[1] << endl;
return 0;
}
返回的样式是否只能应用于具有特定构造函数的类实例?下面的示例可以工作。我正在寻找确认或参考材料。
class A {
public:
int a;
A(int a_) : a(a_) {};
};
A fun4() {
return A(1);
}
在以下位置测试的代码示例:
Apple LLVM版本 6.0 (clang-600.0.56) (基于 LLVM 3.5svn) 目标:x86_64-苹果达尔文14.0.0 螺纹型号:磅
因为
return int 1
不起作用。
但return int(1);
确实...或return 3 - 2;
就此而言。 创建临时或使用文字没有错 - 如有必要,将使用类复制或移动构造函数在调用方的上下文中设置变量,或者有时返回返回值优化 (RVO) 将启动,被调用函数将能够直接在调用方的堆栈中创建返回值。
相关文章:
- 返回的指针属性中类实例上的矢量属性消失
- 返回 C++ 中的指针实例变量
- 在实例化之前推断函数模板的返回类型
- 返回引用实例和非引用实例(return mystr & vs mystr)之间的区别是什么?
- 当函数返回C++向量实例时,它正在运行
- 实例化对象并调用方法,使用单行语法在 C# 或 C++ 中返回值?
- 如何实例化类的公共成员并将其作为 std::p romise 返回?
- 是否是从等待返回到悬而未决的"this"实例的未定义行为?
- 返回实例变量的c++方法可以访问变量中的数据,但不能更改它,但在编译时不会生成错误
- 我们可以在没有新实例化的情况下声明一个抽象方法来返回抽象超类中的子类对象吗
- 是否可以从派生类返回基类的实例?
- 返回具体子类实例的 C++ 虚拟类函数
- 当模板返回类型阻止其实例化时,如何向用户提供漂亮的static_assert消息?
- 隐藏方法的实例返回到呼叫者
- C++,将数组中的重复实例返回到字符串
- 多态实例返回多态实例
- ccomptr _appdomain 创建实例返回系统找不到指定的文件
- 处理共同创建实例返回值
- 如何使用C++单一实例返回仅初始化一次的对象
- 类和函数的实例返回类型混淆