2012年C++专家进阶之五
来源:互联网 发布:centos php一键安装包 编辑:程序博客网 时间:2024/04/30 02:53
2012年C++专家进阶之五
C++编程的时候,用成员初始化列表的方法,来对类成员进行初始化,需要注意的问题。
哪是什么问题呢?请先看代码。
演示代码
class CTest {
public:
CTest(int x);
int m_x;
int m_y;
};
CTest::CTest(int i) : m_y(i), m_x(m_y)
{
}
int main(void)
{
CTest test(100);
Printf(“m_x is %d, m_y is %d\n”,test.m_x,test_y);
}
运行的结果是什么?
一般认为
m_x is 100, m_y is 100
大家可能错误以为上面的代码,首先会做m_y=100,然后做m_x=m_y,最后它们具有相同的值。
真实情况
编译器先初始化m_x,然后才是m_y,,因为它们是按这样的顺序声明的。导致的结果是m_x值是不可预测的。
结论:
使用初始化列表来进行C++初始化类成员,有一个重要特性,就是按照数据成员在类里的声明顺序进行初始化的,而不是按照出现在初始化列表中的顺序进行初始化。
- 2012年C++专家进阶之五
- 2012年C++专家进阶之二
- 2012年C++专家进阶之三
- 2012年C++专家进阶之四
- 2012年C++专家进阶之一
- C专家编程(五)
- 读书笔记之c专家
- 读书笔记之《C专家编程》
- c专家编程之预处理
- SQL 进阶学习之五
- 《C专家编程》:对链接和函数库的思考(五)
- C专家编程 五 声明的优先级规则
- 《C语言参悟之旅》专家推荐
- C专家编程学习之第一章
- C专家编程学习之第二章
- C专家编程-读书笔记之第三章
- C专家编程-读书笔记之第三章
- 《c 专家编程》之bss段
- 呼叫中心软电话不显示
- winform 相对路径
- 第十三周实验报告(任务三)【抽象基类Shape】
- flex中使用json格式
- 《A Simple IOCP Server/Client Class》整改
- 2012年C++专家进阶之五
- Function实现ALV Table 二:ALV的弹出窗口形式
- Ubuntu在3D桌面下窗口标题栏消失的解决
- 1017. Staircases
- Android-NDK开发之基础--Android JNI开发高级篇(JNI中的常用方法)
- 尝试玩玩Houdini的shop
- EXCEl 导出
- 用正则表达式分割字符串(C#扩展方法)
- C# DateTime技巧