//构造函数的对象初始化列表
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
using namespace std; class PointA{
public:
PointA(int _x){
x = _x;
}
void GetX(){
printf("PointA的成员变量%d\n",x);
}
private:
int x;
}; class PointB{
public:
//构造函数的初始化列表
PointB(int _a, int _b) :pa(_b), pa3(_b), pa2(_b)
{
//备注:先初始化 pa,其次pa2,再次pa3,与对象初始化列表没有关系,只与成员变量的定于顺序有关系
//PointB的对象在成员变量之后初始化
a = _a;
}
void GetA(){
pa.GetX();
printf("PointB的成员变量a的值是%d\n",a);
}
private:
int a;
PointA pa;
PointA pa2;
PointA pa3;
}; void ProtectA(){
//PointB pb1; //报错 error C2512: “PointB”: 没有合适的默认构造函数可用
//分析:类PointB定义了有参构造函数,所以系统不再提供无参构造函数
PointB pb2(, );
pb2.GetA(); } void main(){
ProtectA(); system("pause");
}
/* 初始化列表之数组初始化 */

#include <iostream>
#include <string> class Teacher
{
public:
//构造函数
Teacher() :_name(""), _studentId{ }
{
} //构造函数
Teacher(const std::string &name, unsigned int *a) :_name(name), _studentId{ a[],a[],a[],a[],a[],a[],a[],a[],a[] }
{
} //析构函数
~Teacher()
{
} public:
//打印学生
void show(void)
{
printf("=======Teacher name[%s]===============\n", this->_name.c_str());
for (int i = ; i < ; i++)
{
printf("%5d", this->_studentId[i]);
}
printf("\n");
} private:
std::string _name;
unsigned int _studentId[];
}; void test()
{
Teacher t1;
unsigned int a[] = { ,,,,,,,,, };
Teacher t2("jack", a); printf("------t1 start-----\n");
t1.show();
printf("------t1 end-----\n"); printf("------t2 start-----\n");
t2.show();
printf("------t2 end-----\n");
} int main()
{
test();
return ;
}

C++ 构造函数的对象初始化列表的更多相关文章

  1. C++定义构造函数必须使用初始化列表的场合

    明其理,而知其然也. 先给理论.1. 初始化 != 赋值. a.初始化代表为变量分配内存. 变量在其定义处被编译器初始化(编译时). 在函数中, 函数参数初始化发生在函数调用时(运行时). b.赋值代 ...

  2. C++-什么时候需要在类的构造函数中使用初始化列表

    1,如果基类没有default构造函数,则意味着其不能自己初始化.如果其被派生,派生类的构造函数要负责调用基类的构造函数,并传递给它需要的参数.下例中Base 2,如果类成员没有默认构造函数.下例中E ...

  3. C++类构造函数初始化列表

    C++类构造函数初始化列表 构造函数初始化列表以一个冒号开始,接着是以逗号分隔的数据成员列表,每个数据成员后面跟一个放在括号中的初始化式.例如: class CExample {public:     ...

  4. C++类构造函数初始化列表(转)

    构造函数初始化列表以一个冒号开始,接着是以逗号分隔的数据成员列表,每个数据成员后面跟一个放在括号中的初始化式.例如: { public:     int a;     float b;     //构 ...

  5. C++ 构造函数_初始化列表

    构造函数初始化列表以一个冒号开始,接着是以逗号分隔的数据成员列表,每个数据成员后面跟一个放在括号中的初始化式.例如: class Student { public: //构造函数初始化列表 Stude ...

  6. c++,初始化列表

    类对象的构造顺序是这样的: a.分配内存,调用构造函数时,隐式/显示的初始化各数据成员 b.进入构造函数后在构造函数中执行一般计算 1.初始化类的成员有两种方式,一是使用初始化列表,二是在构造函数体内 ...

  7. c++——初始化列表

    多个对象构造和析构 1对象初始化列表 1)对象初始化列表出现原因 1.必须这样做: 如果我们有一个类成员,它本身是一个类或者是一个结构,而且这个成员它只有一个带参数的构造函数,没有默认构造函数.这时要 ...

  8. C++类够做函数初始化列表

    构造函数初始化列表以一个冒号开始,接着是以逗号分隔的数据成员列表,每个数据成员后面跟一个放在括号中的初始化式.例如: class CExample{ public: int a; float b; C ...

  9. C++类初始化列表

    转自:https://www.cnblogs.com/BlueTzar/articles/1223169.html 构造函数初始化列表以一个冒号开始,接着是以逗号分隔的数据成员列表,每个数据成员后面跟 ...

随机推荐

  1. 网站banner图片制作(简易版)

    1.新建图层 根据baner需求,新建图层尺寸: 2.将图片拖进图层 按住shift对图片进行等比例缩放,将等比例缩放后的图片平铺到图层上. 3.添加文字 设置字体以及字体颜色 4.添加描边 选择文字 ...

  2. java学习笔记2015-6-5

    今天晚上不须要不论什么编译器 记事本编写代码 1.安装JDK配置 2.JDK JRE的关系 3.基本的语法  常量  变量  数据类型  逻辑运算符  流程控制语句 4.小的练习  问题 5.课后作业 ...

  3. pselect 和 select

    pselect函数是由POSIX发明的,如今许多Unix变种都支持它. #include <sys/select.h> #include <signal.h> #include ...

  4. Python爬虫实战案例:爬取爱奇艺VIP视频

    一.实战背景 爱奇艺的VIP视频只有会员能看,普通用户只能看前6分钟.比如加勒比海盗5的URL:http://www.iqiyi.com/v_19rr7qhfg0.html#vfrm=19-9-0-1 ...

  5. explain mysql性能优化

    1 使用explain语句去查看分析结果,如   explain select * from test1 where id=1; 会出现: id  selecttype  table  type po ...

  6. 趣味SQL——创建指定的数据类型

    原创作品,出自 "深蓝的blog" 博客,深蓝的blog:http://blog.csdn.net/huangyanlong/article/details/46908843 趣味 ...

  7. AutoFac文档7(转载)

    目录 开始 Registering components 控制范围和生命周期 用模块结构化Autofac xml配置 与.net集成 深入理解Autofac 指导 关于 词汇表 适配器 和 装饰器 A ...

  8. Unity3D动画面板编辑器状态属性对照表

    不推荐用AnimationUtility.SetEditorCurve问题很多,推荐AnimationCurve.AddKey.通过AnimationUtility.GetAllCurves可以获得编 ...

  9. 【Android】13.3 使用SQLite.NET-PCL访问SQLite数据库

    分类:C#.Android.VS2015: 创建日期:2016-02-26 一.简介 本章开头已经说过了,SQLite.NET-PCL用起来很爽,这一节咱们看看怎样使用吧. 二.示例3运行截图 下面左 ...

  10. Windows下ADB默认的5037port被占用,解决方式。

    Windows下可能会因为系统版本号不一样的原因导致有的系统5037port被系统进程占用.导致ADB无法使用5037port,从而导致ADB不能打开.在eclipse上跑Android程序的时候显示 ...