变量定义成 volatile ,避免优化掉。
原文:https://blog.csdn.net/songguangfan/article/details/89049612
前两天在做讲课资料的时候遇到一个比较坑的问题。一般来说调用拷贝构造函数分三种情况
1.当用类一个对象去初始化另一个对象时。
2.如果函数形参是类对象。
3.如果函数返回值是类对象,函数执行完成返回调用时。
道理很简单,我写了个很简单的例子
![](https://i-blog.csdnimg.cn/blog_migrate/a75d360c4e9ea926409449b7e5adc82c.png)
在fun函数中会返回一个class A的对象,那么编译器会在栈上构造一个临时对象,构造临时对象的方法则是调用拷贝构造函数
结果运行后,如下图
![](https://i-blog.csdnimg.cn/blog_migrate/728e1ee19c717b470af890559af6cc15.png)
没有打印出拷贝构造函数的结果。后来经过查找发现是因为g++编译器实现省略创建