类成员变量初始化位置
来源:互联网 发布:mac 实用软件下载 编辑:程序博客网 时间:2024/05/18 03:26
转自:http://www.cnblogs.com/pangxiaodong/archive/2011/08/10/2133197.html
简述
类的成员变量多种多样,比如:int a, const int a, int &a, static int a, static const int a, statice int& a。前面三个分别是普通变量、const变量和引用变量,后面的三个是前面三个分别加上了static。本文主要分析这六种变量初始化的位置。
说明
对于int、const int和int&,这三个类型相对于static来说,每个对象都有一份,因此每个对象都要构造一次。其中,int的初始化不受限制,哪里都行。const int和int &要求在定义的时候初始化,因此,默认要求只能在初始化成员列表中进行。static int、static const int和static int&这三个类型,只要是加上了static,就是静态的,那么对于类来说就是唯一的,所有对象共用一个,那么就应该在在类文件中初始化,在其他任何地方初始化都不合适。有人可能会想,static const int,也是const能不能在初始化成员列表中初始化呢?不行,如果在初始化成员列表中初始化,那么每调用一次构造函数,就会重新初始化一次这个类型,而这个类型是static,不应该重复初始化,编译不过的,假设编译过了,那么这个类型也会多次被初始化,与const相悖。
代码
#include<iostream>using namespace std;class Test { int a; // 初始化位置:构造函数初始化成员列表,构造函数,其他函数 const int b; // 初始化位置:构造函数初始化成员列表 int & c; // 初始化位置:构造函数初始化成员列表 static int d; // 初始化位置:类文件 static const int e; // 初始化位置:类文件 static int &f; // 初始化位置:类文件public : Test(int a,int b,int c):a(a),b(b),c(c) { } // 构造函数初始化成员列表};int Test::d = 0; // 类文件const int Test::e = 0; // 类文件int& Test::f = Test::d; // 类文件int main() { Test test(1,2,3); system("PAUSE"); return 0;}
0 0
- 类成员变量初始化位置
- 类成员变量初始化位置(精简易懂)
- C++类成员变量初始化位置
- 初始化类成员变量
- 类的成员变量初始化
- 类成员变量初始化专题
- 类成员变量初始化顺序:
- c++ 类成员变量初始化
- 类成员变量初始化专题
- 类的成员变量初始化
- 类成员变量的初始化
- Java类成员变量的初始化顺序
- 类成员变量数组初始化方法解析
- 类的数组成员变量的初始化
- java类成员变量的初始化顺序
- 类的成员变量,请一定初始化
- Java类成员变量的初始化顺序
- 类中特殊成员变量的初始化
- 求1到n的倒数和
- C++函数重载
- The history of the development of the computer
- 堆插入、删除、排序
- TeX Live for windows 安装及更新
- 类成员变量初始化位置
- 输出标准体重
- OSX下编译framework bundle
- SQL语句Where中使用别名作为判断条件
- 二叉搜索树的插入和删除
- C++函数重载和const
- 第7章 图
- 360笔试编程题之第一题
- 原码反码和补码