C++对象模型 ch2 构造函数语意学

本文深入探讨了C++编程中两个常见的误解:默认构造函数的合成与合成默认初始化器的作用。通过实例分析,揭示了初始化顺序与初始化列表之间的不一致,展示了这一现象背后的原理及其可能引发的错误。文章旨在帮助初学者避免常见陷阱,提高编程能力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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; }

运行结果:

>> ./a.out -4197020

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值