Ron*_*nho 20 c++ return list-initialization
我偶然发现以下编译:
#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;
}
Run Code Online (Sandbox Code Playgroud)
感兴趣的线是 (*)。我猜这个函数foo相当于:
A foo(int k, const char* str){
return A(k, cstr);
}
Run Code Online (Sandbox Code Playgroud)
但是,(*) 中是否有针对此机制的特殊名称?或者仅仅是编译器知道由于返回类型而调用哪个构造函数的简单事实?