71 C++ Linux下的 不用 g++优化行为,验证一些问题

从前面的学习知道,在返回一个类对象的时候,g++已经做了一些优化。

Teacher31 DoubleTeacher31(Teacher31 &teatemp) {
	Teacher31 tea;//1. 构造函数被调用 Teacher31 的 构造函数 被调用 000000AE5E2FF674
	tea.mage = teatemp.mage * 2;
	return tea;//2.调用拷贝函数将tea的值拷贝到一个临时对象中,return出去 Teacher31 的 copy构造函数 被调用 000000AE5E2FF7F4
				//3.然后把teatemp析构了。Teacher31 的 析构函数 被调用 000000AE5E2FF674
}

优化成

Teacher31 DoubleTeacher32(Teacher31 &teatemp) {
	return Teacher31(teatemp.mage * 2);
}

在linux下,G++已经完成了这样的行为。

因此在LINUX G++上,不需要额外的优化。

但是可以使用命令让g++不给我们优化

在Linux下,如果不优化,应该怎么执行命令呢?

命令为:其中a.cpp 为源文件名,-o 后面的aobj是你命名的文件名字

g++ -fno-elide-constructors Teacher.cpp -o aobj

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