初始化列表
来源:互联网 发布:ps4网络 编辑:程序博客网 时间:2024/06/18 12:26
#include<iostream>using namespace std;class A{public: A() : x(10), y(20), z(x) //对于const以及引用类型成员变量只能在初始化列表中进行初始化 { x = 100; //y=200; //错误: 向只读成员‘A::y’赋值 z = y; } A(int x, int y, int z) : x(x), y(y), z(z) { } void out() { cout << "x:" << x << endl; cout << "y:" << y << endl; cout << "z:" << z << endl; }private: int x; const int y; int &z;};void main(){ A a; a.out();}
初始化列表顺序:
1. 成员变量在使用初始化列表初始化时,与构造函数中初始化成员列表的顺序无关,只与定义成员变量的顺序有关。因为成员变量的初始化次序是根据变量在内存中次序有关,而内存中的排列顺序早在编译期就根据变量的定义次序决定了。这点在EffectiveC++中有详细介绍。
2. 如果不使用初始化列表初始化,在构造函数内初始化时,此时与成员变量在构造函数中的位置有关。
3. 初始化列表优于构造函数体内赋值执行,并且构造函数体内赋值会带来额外的开销,效率会低于构造函数初始化列表。
class A { private: int n1; int n2; public: //初始化列表 A(): n2(0),n1(n2+2) { } //赋值 //A() //{ // n2 = 0; // n1 = n2 +2; //} void Print() { cout << "n1:" << n1 << ", n2: " << n2 <<endl; } }; void main() { A a; a.Print();}
阅读全文
0 0
- 初始化列表
- 初始化列表
- 初始化列表
- 初始化列表
- 初始化列表
- 初始化列表
- 初始化列表
- 初始化列表
- 初始化列表
- 初始化列表
- 初始化列表
- 初始化列表
- 初始化列表
- 列表初始化
- 初始化列表
- 初始化列表
- 初始化列表
- 列表初始化
- lcd参数解释及计算
- APK空包签名
- Android主题与Toolbar样式之间的关系
- Eclipse导入git上的maven web项目 部署
- caffe:math_functions 分析
- 初始化列表
- 虚拟机liunx 配置静态ip地址
- Leetcode 54 Spiral Matrix
- Ubuntu16.04+CUDA+Theano+keras配置
- (Android开发自测)在Mac OS 10.12 上安装配置appium
- apue源码使用
- 学习互联网架构第二课(脏读)
- IPC主题一:消息队列
- Android 手机屏幕一些属性