C++成员变量初始化列表中初始化顺序
1.C++使用初始化列表初始化时,成员变量的初始化顺序:只与定义变量的顺序有关.
#include <iostream>
using namespace std;
class A{
private://结论:成员变量在使用初始化列表初始化时,与构造函数中初始化成员列表的顺序无关,只与定义成员变量的顺序有关;//第一种情况;//int n1;//先定义成员变量n1,先初始化n1,因为n1没有赋初值,所以n1是个随机数;//int n2;//后定义成员变量n2,因为后初始化n2,n2为0;//第二种情况;int n2;//先定义成员变量n2,先初始化n2,因为n2 = 0;int n1;//后定义成员变量n1,因为后初始化n1,n1 = 2 + 0为2;
public:A(): n2(0), n1(n2+2){}//初始化函数列表void Print(){cout << "n1:" << n1 << ", n2: " << n2 <<endl;}
};
int main(){A a;a.Print();return 1;
}2.C++不使用初始化列表初始化,在构造函数内初始化时,此时与成员变量在构造函数中的位置有关.
#include <iostream>
using namespace std;
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;}
};
int main(){A a;a.Print();return 1;
}
C++成员变量初始化列表中初始化顺序相关推荐
- C++经典问题:如果对象A中有对象成员B,对象B没有默认构造函数,那么对象A必须在初始化列表中初始化对象B?
对象成员特点总结: (1)实例化对象A时,如果对象A有对象成员B,那么先执行对象B的构造函数,再执行A的构造函数. (2)如果对象A中有对象成员B,那么销毁对象A时,先执行对象A的析构函数,再执行B的 ...
- C++中类成员变量在初始化列表中的初始化顺序
引子:我们知道,C++中类成员变量的初始化顺序与其在类中的声明顺序是有关的. 先看代码: 1 class TestClass1 2 { 3 public: 4 TestClass1() { 5 cou ...
- C++类构造函数初始化列表及初始化成员变量的误区
构造函数初始化列表以一个冒号开始,接着是以逗号分隔的数据成员列表,每个数据成员后面跟一个放在括号中的初始化式.例如: [cpp] view plaincopy class CExample { pub ...
- 【c++】构造函数初始化列表中成员初始化的次序性
上代码 #include <iostream> using namespace std;class A {public:A(int v): j(v + 2), i(j) {}void pr ...
- 子类初始化列表不能初始化父类元素 -- class 'Derived' does not have any field named 'x'
缘由 偶尔编写如下代码,编译出错, class Base{public:int x; };class Derived : public Base {public:Derived() : x(10) { ...
- 28.构造函数中,成员变量一定要通过初始化列表来初始化的?
首先要明确:如果对象成员是const或者引用的话,必须将其初始化! 构造函数中,成员变量一定要通过初始化列表来初始化的的几种情况! 1)对象成员是const或者引用 #include <iost ...
- java 静态成员 创建_Java学习笔记11---静态成员变量、静态代码块、成员变量及构造方法的初始化或调用顺序...
当创建一个对象时,各种成员变量及构造方法的初始化或调用顺序是怎样的呢? (1).如果类尚未加载,则先初始化静态成员变量和静态代码块,再初始化成员变量,最后调用相应的构造方法: (2).如果类已经加载过 ...
- 必须在构造函数基/成员初始值设定项列表中初始化
C++ primer 上面的一个例子:// constRef.cpp : 定义控制台应用程序的入口点. //#include "stdafx.h"class constRef { ...
- [面试] C++ 语法(一) —— 初始化列表的初始化顺序
首先来看一道经典的 C++ 面试题: (1)初始化列表的初始化顺序:不是按照列表的顺序进行的 (2)初始化列表的初始化顺序:是按照内存模型中的成员变量的顺序(也即类声明的定义顺序)进行的: (3)也即 ...
最新文章
- Fort.js – 时尚、现代的表单填写进度提示效果
- java实现遍历树形菜单方法——service层
- 网站CSS样式不起作用,或只有一部分起作用?随手记
- Windows在当前目录(文件)打开cmd窗口
- javaweb系统oracle锁表,oracle、websphere下获取数据库连接时出现死锁
- group by 查询分组后 各组的内部条数与组的条数
- 常用MIME类型(Flv,Mp4的mime类型设置)(转载)
- 例解List<Map<String, Object>>存放的对象问题
- mysql references关键字_mysql关键字有哪些?
- jetty快速入门与嵌入使用 jetty
- php mysql数据库同步_教你怎样在两台MySQL数据库间实现同步
- VB2010的串口能正常接收数据,但无法发送数值大于127的数据
- 基于Python的手写拼音识别
- echarts3D地球
- 如何做一场有创意的活动策划?
- Apache的性能解读
- 知乎问题下用户评论的爬取
- RankNet,LambdaRank,LambdaMart
- Mysql数据库存储ip地址
- 个人博客系统项目设计及结果展示图