繁体   English   中英

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); 是在Radio r("PSR", 100.8);时进行 复制初始化 直接初始化

C++17

由于强制复制 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 之前,有非强制复制 elison


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

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

上面是一个名为name的函数的声明,它的返回类型为type并且有0个参数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM