转换构造函数的实际工作方式
How converting constructor actually work
我发现一个接受单个参数的构造函数被称为转换构造函数(c++03)。但这是否意味着特定的构造函数将隐式创建一个临时对象,并将其分配给所需的对象?(我们看不见?)那么写作有什么区别EgClass m=EgClass(1)和EgClass m=1EgClass(1)是否将int类型转换为EgClass?(如果是,这是怎么发生的?)同样,当我们写EgClass m(1)时会发生什么?
但这是否意味着特定的构造函数将隐式创建一个临时对象,并将其分配给所需的对象?
是的,但只是形式上的-在许多情况下,即使在关闭优化的情况下进行构建,它也会优化这些临时性。这意味着在构造函数中添加的任何日志都不会表明创建了这样的临时性。
那么写EgClass m=EgClass(1)和EgClass m=1的区别是什么?(如果是,这是怎么发生的?)
EgClass m=EgClass(1)
与EgClass m=1
相同,您可以想象,当编译器看到EgClass m=1
时,它会将其转换为EgClass m=EgClass(1)
,然后转换为EgClass m(EgClass(1))
EgClass(1)是否将int类型转换为EgClass?(如果是,这是怎么发生的?)
是的,1转换为EgClass。这是使用临时的——但同样,形式上有一个临时的,但允许编译器对其进行优化。
同样,当我们编写EgClass m(1)时会发生什么
整数1被转换为EgClass类型的对象。没有临时的,即使是正式的。
相关文章:
- 以螺旋方式打印矩阵的程序.(工作不好)
- 为字符串中每 N 个字符插入空格的函数没有按照我认为的方式工作?
- 如何解决在负数的情况下程序以相同方式工作的问题?
- 在 Eclipse 中添加库的工作方式是否与在 Visual Studio 中相同?
- 用于了解输入和输出流缓冲区实际工作方式的程序
- 有人可以解释速记赋值运算符的实际工作原理吗?
- 字符串文字到 char 数组的转换如何在C++中实际工作
- `std :: string :: find_last_of()如何实际工作
- 这种计算大数的方式如何工作
- 对等如何实际工作网络/端口明智
- Ctrl Z的实际工作方式
- 浮点计算在 C++ 中是如何实际工作的
- 噪声功能的实际工作原理
- 转换构造函数的实际工作方式
- 栅栏是如何在c++中实际工作的
- 如何检查驱动程序代码签名策略是否已启用并实际工作
- 在C++参数中的引用和指针如何实际工作?他们的固定协议/"rule"是什么?
- 如何以编程方式从工作线程获得父线程和兄弟线程的CPU利用率
- 带循环的宏是如何在C/C++中实际工作的
- C++:将WCHAR转换为LPCWSTR - 实际工作示例