成员初始化列表用于在构造函数中初始化类的成员变量,与聚合初始化列表不同,它必须使用直接初始化形式,不能使用赋值初始化。 #include<iostream>classFoo{private:intm_x{};intm_y{};public:Foo(intx,inty):m_x{x},m_y{y}// here's our member initialization list{std::cout<<"Foo("<<x<<", "<...
如果数据成员的名称为mdata,并需要将它初始化为val,则初始化器为mdata(val). Classy::Classy(intval) : mdata(val) 以下三种情况下需要使用初始化成员列表: 1. 需要初始化const修饰的类成员或初始化引用成员数据; 2. 需要初始化的数据成员是对象的情况(这里包含了继承情况下,通过显示调用父类的构造函数对父类...
const修饰的变量是要在声明时就初始化的,否则后面通过赋值来修改它的值就必然违背这个关键字设计的初衷了。那上面提到的构造函数里面通过赋值的方式初始化const int capacity就行不通了。C++11标准引入了构造函数成员初始化列表,写法为: ClassName(para1, para2, ...):menber1(para1),menber2(para2),... 具体...
A(int &tmpvalue):m_yy(tmpvalue), m_myc(tmpvalue),Base(tmpvalue, tmpvalue),cmysub(tmpvalue) { m_x = 0; m_y = 0; m_yy = 180; } }; 二.使用成员初始化列表优势 除了必须用初始化列表的场合,我们用初始化列表还有什么其他目的? 有,就是提高程序运行效率。 对于类类型成员变量xobj放到初始...
1.2 初始化列表 语法: 初始化列表:以一个冒号开始,接着是一个以逗号分隔的数据成员列表,每个"成员变量"后面跟一个放在括号中的初始值或表达式。 代码语言:javascript 复制 classDate{public:Date(int year,int month,int day):_year(year),_month(month),_day(day){}private:int _year;int _month;int _da...
《C++ Primer》中提到在以下三种情况下需要使用初始化成员列表: 情况一、需要初始化的数据成员是对象的情况(这里包含了继承情况下,通过显示调用父类的构造函数对父类数据成员进行初始化); 情况二、需要初始化const修饰的类成员或初始化引用成员数据; 情况三、子类初始化父类的私有成员; ...
成员初始化列表 对于const数据成员,必须在执行到构造函数体之前,即创建对象时进行初始化。 2、成员初始经列表由逗号分隔的初始化列表组成(前面带冒号)。它位于参数列表的右括号之后、函数体左括号之前。 3、初值可以是常量或构造函数的参数列表中的参数,这种方法并不限于初始化常量。
1.初始化列表 1.1 构造函数赋值 1.2 初始化列表 1.3 explicit 关键字 2.static 静态成员 2.1 概念 2.2 特性 3.友元 3.1 友元函数 3.2 友元类 4.内部类 5.匿名对象 1.初始化列表 1.1 构造函数赋值 在创建对象时,编译器通过调用构造函数,给对象中各个成员变量一个合适的初始值 ...
类中的const成员只能在初始化列表中指定初始值 #include <stdio.h> class Value { private: int mi ; public: Value(int i) { printf("i = %d\n",i); mi = i; } int getI() { return mi; } }; class Test { private: const int ci; Value m2; Value m3; Value m1; public: Test() :...