大佬教程收集整理的这篇文章主要介绍了VC的一个大错误?为什么initializer-list没有对结构进行值初始化?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
“如果初始化列表没有元素而T是具有默认构造@L_607_1@的类类型,则该对象是值初始化的.”
struct A { int get() { return i; } private: int i; }; int main() { A a = {}; int n = a.get(); cout << n << endl; // n is a random number rather than 0 return 0; }
这是VC的错误吗?我的VC是最新的2012年11月CTP.
所以A应该是零初始化的,程序应该打印0.
在以下程序中:
struct A { int get() { return i; } private: int i; }; #include <iostream> int main() { char c[sizeof(A)]; new (C) int{42}; std::cout << (new (C) A{})->get() << '\n'; }
gcc-4.7.2正确输出0; gcc-4.6.3错误输出42; clang-3.0绝对疯狂并输出垃圾(例如574874232).
以上是大佬教程为你收集整理的VC的一个大错误?为什么initializer-list没有对结构进行值初始化?全部内容,希望文章能够帮你解决VC的一个大错误?为什么initializer-list没有对结构进行值初始化?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。