项目环境:windows visual studio 2003 C++
在一个项目中平时在debug版下没有遇到什么错误,连release版也不会出错,因为这个错是一个未定义的错误行为。但在debug版下加入“/GZ”编译选项后,运行时就会发现错误,原来是一个构造函数中调用了一个虚函数。通常在构造函数和析构函数中是不可以调用虚函数,因为这时对象并没有完成虚函数表的建立,所以在这时调用函数是很危险的。
本文探讨了在C++中构造函数内调用虚函数的问题,特别是在使用特定编译选项(/GZ)时可能导致的错误行为。指出在对象尚未完全初始化时调用虚函数的潜在危险。
项目环境:windows visual studio 2003 C++
在一个项目中平时在debug版下没有遇到什么错误,连release版也不会出错,因为这个错是一个未定义的错误行为。但在debug版下加入“/GZ”编译选项后,运行时就会发现错误,原来是一个构造函数中调用了一个虚函数。通常在构造函数和析构函数中是不可以调用虚函数,因为这时对象并没有完成虚函数表的建立,所以在这时调用函数是很危险的。
4236

被折叠的 条评论
为什么被折叠?