神秘的临时对象

下面的程序输出什么?为什么?

神秘的临时对象_第1张图片

程序意图:

在 Test() 中以 0 作为参数调用 Test(int i)

将成员变量 mi 的初始值设置为 0

运行结果:

成员变量 mi 的值为随机值

构造函数是一个特殊的函数

是否可以直接调用?

是否可以在构造函数中调用构造函数?

直接调用构造函数的行为是什么?

直接调用构造函数将产生一个临时对象

临时对象的声明周期只有一条语句的时间

临时对象的作用域只在一条语句中

临时对象是  C++  中值得警惕的灰色地带

编译器的行为

现代 C++ 编译器在不影响最终执行结果的情况下,会尽力减少临时对象的产生!!!

小结

直接调用构造函数将产生一个临时对象

临时对象是性能的瓶颈,也是 bug 的来源之一

现代 C++ 编译器会尽力避开临时对象

实际工程开发中需要人为的避开临时对象

你可能感兴趣的:(C++,c++,开发语言)