读书笔记 effective C++ 条款13: initialization list的members 初始化次序应该和其在Class内声明的次序相同
来源:互联网 发布:mac淘宝不能上传图片 编辑:程序博客网 时间:2024/04/30 17:39
看了这个段文章,才理解原来成员变量的初始化是按照声明的次序完成的。
我自己写了一个小程序来验证一下:
file Aaa.h:
/*
* Aaa.h
*
* Created on: Feb 28, 2015
*/
#ifndef AAA_H_
#define AAA_H_
class Aaa {
public:
int c,b,a;
Aaa(int x, int y);
virtual ~Aaa();
};
#endif /* AAA_H_ */
file Aaa.cpp
/*
* Aaa.cpp
*
* Created on: Feb 28, 2015
* Author: yuewang
*/
#include "Aaa.h"
#include <iostream>
using namespace std;
Aaa::Aaa(int x, int y):a(x),b(y),c(a+b) {
// TODO Auto-generated constructor stub
}
Aaa::~Aaa() {
// TODO Auto-generated destructor stub
}
int main()
{
Aaa a(1,2);
cout<<"a="<<a.a<<endl;
cout<<"b="<<a.b<<endl;
cout<<"c="<<a.c<<endl;
}
一般都会以为输出
a=1
b=2
c=3
实际上输出是
a=1
b=2
c=0
原因是 初始化的次序是按照声明的次序来的,即c, b, a,
c引用到a和b,其时a和b的值还没有初始化。 所以c就给初值为0.
- 读书笔记 effective C++ 条款13: initialization list的members 初始化次序应该和其在Class内声明的次序相同
- [笔记]Effective C++13条(init list中的member初始化次序应与class内的声明次序相同)
- Effective c++ 条款13: 初始化列表中成员列出的顺序和它们在类中声明的顺序相同
- 条款4:不同编译单元内的non-local static对象的初始化次序
- effective C++笔记之条款13: 初始化列表中成员列出的顺序和它们在类中声明的顺序相同
- 对象初始化和销毁的次序
- 派生类初始化的次序
- 条款13:初始化列表中成员列出的顺序和它们在类中声明的顺序相同
- 条款 13: 初始化列表中成员列出的顺序和它们在类中声明的顺序相同
- 关于变量和函数的初始化和执行次序
- 总结Java类的初始化先后次序
- c++ 构造函数初始化的执行次序
- websphere的lib、class类加载次序
- effective C++笔记———不同编译单元内定义之non-local static对象的初始化次序问题(真拗口o(╯□╰)o)
- 初始化次序
- Effective C++学习笔记:初始化列表中成员列出的顺序和它们在类中声明的顺序相同
- Effective C++学习笔记:初始化列表中成员列出的顺序和它们在类中声明的顺序相同
- 不同编译单元内的非局部静态对象的初始化次序问题
- 嵌入式系统中使用远程syslog进行调试与诊断
- 在CentOS上安装Hadoop 2.x 集群
- Visual Assist过期解决方法
- python 函数传递
- Hibernate资料整理
- 读书笔记 effective C++ 条款13: initialization list的members 初始化次序应该和其在Class内声明的次序相同
- 获取windows版本信息的做法
- Ubuntu安装goldendict翻译工具+词典资源
- Android开发之InstanceState详解
- 整理开发学习资源
- java 文档注释
- 算法精解二十三(C语言版)
- block 与 delegate 的区别
- 通过实现一个TableView来理解iOS UI编程