这几年一直在linux上开发,用的gcc版本比较高,最近把gcc降到4.8.5(centos 7默认版本)后,出现了一些成员变量初始化的问题。
看示例:
class Test
{
public:
Test() = default;
int GetA() { return m_a; }
private:
int m_a;
};
int main(int argc, char **args)
{
Test test;
printf("%d\n", test.GetA());
return 0;
}
gcc 8 debug和release输出:0
gcc 4.8 debug输出2147483647
或者-2147483648
release输出0
vs最新版本(2019)debug输出随机数 release输出0
看来还是显式初始化靠谱一些
c++ 默认构造函数 不同编译器debug和release的区别
原文:https://www.cnblogs.com/flying_bat/p/14053937.html