1. Programmers new to C++ often have two common misunderstandings:
That a default constructor is synthesized for every class that does not define one
That the compiler-synthesized default constructor provides explicit default initializers for each data member declared within the class
As you have seen, neither of these is true.
2. This apparent anomaly between initialization order and order within the initialization list can lead to the following nasty pitfall
>> cat B.CPP #include <iostream> using namespace std; class B { public: int i; int j; B(int v):j(v),i(j){} }; int main() { B b(3); cout << b.i << endl; }运行结果:
本文深入探讨了C++编程中两个常见的误解:默认构造函数的合成与合成默认初始化器的作用。通过实例分析,揭示了初始化顺序与初始化列表之间的不一致,展示了这一现象背后的原理及其可能引发的错误。文章旨在帮助初学者避免常见陷阱,提高编程能力。
2万+

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



