C++ 构造函数的对象初始化列表
//构造函数的对象初始化列表
#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++ 构造函数的对象初始化列表的更多相关文章
- C++定义构造函数必须使用初始化列表的场合
明其理,而知其然也. 先给理论.1. 初始化 != 赋值. a.初始化代表为变量分配内存. 变量在其定义处被编译器初始化(编译时). 在函数中, 函数参数初始化发生在函数调用时(运行时). b.赋值代 ...
- C++-什么时候需要在类的构造函数中使用初始化列表
1,如果基类没有default构造函数,则意味着其不能自己初始化.如果其被派生,派生类的构造函数要负责调用基类的构造函数,并传递给它需要的参数.下例中Base 2,如果类成员没有默认构造函数.下例中E ...
- C++类构造函数初始化列表
C++类构造函数初始化列表 构造函数初始化列表以一个冒号开始,接着是以逗号分隔的数据成员列表,每个数据成员后面跟一个放在括号中的初始化式.例如: class CExample {public: ...
- C++类构造函数初始化列表(转)
构造函数初始化列表以一个冒号开始,接着是以逗号分隔的数据成员列表,每个数据成员后面跟一个放在括号中的初始化式.例如: { public: int a; float b; //构 ...
- C++ 构造函数_初始化列表
构造函数初始化列表以一个冒号开始,接着是以逗号分隔的数据成员列表,每个数据成员后面跟一个放在括号中的初始化式.例如: class Student { public: //构造函数初始化列表 Stude ...
- c++,初始化列表
类对象的构造顺序是这样的: a.分配内存,调用构造函数时,隐式/显示的初始化各数据成员 b.进入构造函数后在构造函数中执行一般计算 1.初始化类的成员有两种方式,一是使用初始化列表,二是在构造函数体内 ...
- c++——初始化列表
多个对象构造和析构 1对象初始化列表 1)对象初始化列表出现原因 1.必须这样做: 如果我们有一个类成员,它本身是一个类或者是一个结构,而且这个成员它只有一个带参数的构造函数,没有默认构造函数.这时要 ...
- C++类够做函数初始化列表
构造函数初始化列表以一个冒号开始,接着是以逗号分隔的数据成员列表,每个数据成员后面跟一个放在括号中的初始化式.例如: class CExample{ public: int a; float b; C ...
- C++类初始化列表
转自:https://www.cnblogs.com/BlueTzar/articles/1223169.html 构造函数初始化列表以一个冒号开始,接着是以逗号分隔的数据成员列表,每个数据成员后面跟 ...
随机推荐
- Dreamweaver界面主要菜单功能介绍
启动界面有四个功能:主要使用新建HTML,其中HTML有很多版本,由于国内IE6.0占据了将近百分之七十的比例,所以最新的HTML1.1对他支持的不好,我们主要使用XHTML 1.0 Transiti ...
- 微信/易信公共平台开发(四):公众号调试器 (仿真微信平台,提供PHP源码)
开发微信/易信公共平台时,调试往往很麻烦,一般只能在手机上边试边改, 或在服务器写日志.当你的服务器脚本有Bug时,手机上没有显示,追查是不容易的.我在开发过程中,编写了一个调试器, 能仿真微信/易信 ...
- 使用poll处理任意数目个客户的单进程程序
将http://www.cnblogs.com/nufangrensheng/p/3590002.html中的select改用poll. int main(int argc, char **argv) ...
- socket shutdown 与 close 函数 的区别
假设server和client 已经建立了连接,server调用了close, 发送FIN 段给client(其实不一定会发送FIN段,后面再说),此时server不能再通过socket发送和接收数据 ...
- 【Linux】(2013-7-19)配置tftp与开发板传送文件
1. 安装必须软件 sudo apt-get install -y xinetd tftp-hpa 2. 修改配置文件 vi /etc/default/tftpd-hpa # /etc/default ...
- p2p网贷3种运营模式
迄今为止,接触了3套不同的P2P系统.当中一套是我參与开发的,另外两套是别的开发商提供的. P2P系统的核心实体:借款人.平台.理財人. 模式一: 借款人的线上账号由平台统一维护.借款人能够通 ...
- Android系统源代码学习步骤
目前,互联网行业正在朝着移动互联网方向强劲地发展,而移动互联网的发展离不开背后的移动平台的支撑.众所周知,如今在移动平台市场上,苹果的iOS.谷歌的Android和微软的Windows Phone系统 ...
- JavaScript 中 substr 和 substring的区别
http://www.cnblogs.com/meil/archive/2007/01/05/598528.htmlString.substr(N1,N2) 这个就是我们常用的从指定的位置(N1)截取 ...
- webqq协议分析之~~~~验证是否需要验证码
对于小黄鸡我想大家(喜欢在群里bb的人...)肯定一点都不陌生,那段时间大家在群里对小鸡是各种调戏啊,都有点不忍直视.那时我便想能不能自己也做个呢,后来想想还是算了吧,自己技术太渣渣,然后就不了了之. ...
- 用Reflector for .NET反编译dll文件(.net),把整个dll导出个cs插件
Reflector for .NET 下载地址: http://www.aisto.com/roeder/dotnet/ Reflector.FileDisassembler.zip下载地址: htt ...