Ste*_*ing 2 c++ constructor initialization variable-initialization visual-studio
我是 C++ 新手,正在尝试理解一些东西。我的 main.cpp 中有这段代码:
Radio r = Radio("PSR", 100.8);
Run Code Online (Sandbox Code Playgroud)
或该代码:
Radio r("PSR", 100.8);
Run Code Online (Sandbox Code Playgroud)
两者似乎都有效并且做同样的事情。那么有什么区别呢?
Radio r = Radio("PSR", 100.8);是复制初始化Radio r("PSR", 100.8);,是直接初始化。
从 C++17 开始,由于强制复制 elison,两者是等效的。
Radio r = Radio("PSR", 100.8); //from C++17 this is same as writing Radio r("PSR", 100.8);
Run Code Online (Sandbox Code Playgroud)
但在 C++17 之前,第一种情况Radio r = Radio("PSR", 100.8);可能会导致创建一个临时的 using 并r进行复制初始化。这是因为在 C++17 之前,存在非强制的 copy elison。
另一件需要注意的事情是,如果你要写:
type name(); //this is a function declaration
Run Code Online (Sandbox Code Playgroud)
上面是一个名为 的函数的声明,name该函数的返回类型type为 并具有0参数。