c++ - 返回表达式的`{}`的含义
问题描述
我偶然发现以下编译:
#include <string>
#include <iostream>
class A{
int i{};
std::string s{};
public:
A(int _i, const std::string& _s) : i(_i), s(_s) {
puts("Called A(int, const std::string)");
}
};
A foo(int k, const char* cstr){
return {k, cstr}; // (*)
}
int main(){
auto a = foo(10, "Hi!");
return 0;
}
感兴趣的线是 (*)。我猜这个功能foo
相当于:
A foo(int k, const char* str){
return A(k, cstr);
}
但是,(*)中是否有此机制的特殊名称?或者仅仅是编译器知道由于返回类型而调用哪个构造函数的简单事实?
解决方案
推荐阅读
- compiler-errors - xcode 12.3 给了我下面的错误这里地图 IOS swift 5
- angular - 如何更改值(从选择)但不更改参考值
- javascript - 在同一个按钮中激活和停用
- flutter - Flutter:更新 ListView 中的所有项目
- node.js - 使用流连接文件
- github - 强制 PR 合并到 GitHub 上的不同分支的合并策略
- python - 函数返回变量而不是变量的赋值
- flutter - 未处理的异常:NoSuchMethodError:在 null 上调用了方法“open”。在剃刀支付
- html - 横幅图像下带有标签的滑块
- nginx - nginx:if条件中的“allow”指令