type name() 和 type name = type() 有什么区别?

What's the difference between type name() and type name = type()?

我是 C++ 的新手,正在尝试了解一些东西。我的 main.cpp:

中有这段代码
Radio r = Radio("PSR", 100.8);

或那个代码:

Radio r("PSR", 100.8);

两者似乎都有效并且做同样的事情。那有什么区别呢?

Radio r = Radio("PSR", 100.8);copy initialization while Radio r("PSR", 100.8); is direct initialization.

C++17

由于 mandatory copy elison 来自 C++17,两者是等价的。

Radio r = Radio("PSR", 100.8); //from C++17 this is same as writing Radio r("PSR", 100.8);

C++17 之前的版本

但是 在 C++17 之前,第一种情况 Radio r = Radio("PSR", 100.8); 可能会导致创建一个临时文件,使用它 r 进行复制初始化。这是因为在 C++17 之前,有 non-mandatory copy elison.


另一件需要注意的事情是,如果你要写:

type name(); //this is a function declaration

以上是名为 name 的函数的声明,该函数具有 type 的 return 类型并具有 0 个参数。