关于default constructor一个要注意的地方
2009-03-21 10:09
246 查看
看到“深度探索C++对象模型”中关于default constructor的描述:编译器会按照成员变量的声明次序来对成员变量初始化。突然有个想法:假设类中有两个成员变量A,B,其中A的初始化在需要B事先初始化好,而在声明中,A生命在B之后,这么做编译结果会不会出问题。试了一下,果然如此。代码如下
1#include <stdio.h>
2
3class A
4
14class B
15
23class C
24
32class ABC
33
45void main()
46 ABC abc;
48}
我本来想让b打印出B=1,结果却并非如此!
但如果将36,37行换过来,结果就对了!
对于程序员来讲,这点一定要注意,否则会带来奇怪的结果,而可恶的vc2005编译器竟然没有任何警告出现!
1#include <stdio.h>
2
3class A
4
14class B
15
23class C
24
32class ABC
33
45void main()
46 ABC abc;
48}
我本来想让b打印出B=1,结果却并非如此!
但如果将36,37行换过来,结果就对了!
对于程序员来讲,这点一定要注意,否则会带来奇怪的结果,而可恶的vc2005编译器竟然没有任何警告出现!
相关文章推荐
- 关于cocos2dx,多个图块集下的CCTMXTiledMap要注意的一个小地方
- 关于Qt中QMap的一个需要注意的地方
- 关于vim文件格式的一个需要注意的地方
- 关于相对布局中控件摆放位置的一个需要注意的小地方
- 关于cin.ignore()函数的一个需要注意的地方
- 写正确函数需要注意的地方:给定一个十进制整数N,计算从1开始到N的所有整数出现的“1”的个数
- 关于Android创建Activity需要注意的地方
- 一个关于while(cin>>a)的一个不得不注意的问题
- struts中应用validator框架验证应注意的一个地方
- jQuery与CSS结合制作tab效果有一个很重要的地方需要注意。
- 关于Spring + Compass + paoding 配置的一个注意点
- 《WCF服务编程》关于“队列服务”一个值得商榷的地方
- 关于php面向对象的一个坑爹的地方
- mule初学的一个注意地方
- 关于找工作的过程中需要注意的地方
- 详解关于Vue2.0路由开启keep-alive时需要注意的地方
- listview一个需要注意的地方(想不到叫什么标题了)
- ajax post中在firefox返回值一个值得注意的地方
- Java继承一个注意的地方
- 归并排序+一个编程需要注意的地方