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 构造函数初始化列表以一个冒号开始,接着是以逗号分隔的数据成员列表,每个数据成员后面跟 ...
随机推荐
- 反编译示例:mxd检查
gisoralce在博客园发布了一个mxd检查工具,主要功能是将arcgis的mxd数据源有效性(含矢量和影像)检查.检查是否为相对路径,自动保存为相对路径. 这是一个未加壳的.NET程序,正好拿来练 ...
- MySQL截取字符串函数方法
函数: 1.从左开始截取字符串 left(str, length) 说明:left(被截取字段,截取长度) 例:select left(content,200) as abstract from my ...
- 【转发】Visual Studio 2013 如何关闭调试而不关闭IIS Express
在VS主面板打开:工具->选项->调试->编辑继续 取消选中[启用"编辑并继续"] 就OK了 (英文版的请对应相应的操作) 不过这是针对所有的调试,如果你想针 ...
- eclipse debug 错误 之 processWorkerExit
eclipe 在debug模式下,有时候老是跳转到 ThreadPoolExecutor 之 processWorkerExit方法,很是让人恼火,是 因为在 java.util.concurrent ...
- 滚动居中效果(frame版)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- Loadrunner中影响"响应时间"的设置
1.Runtime setting的设置 *Think time 这个就不多说了,如果忽略则"响应时间"会变短,但同时对服务器的压力增大,从而间接影响响应时间 在anlaysis里 ...
- 用oracle建表,必须注意Oracle 关键字(保留字)
Oracle 关键字(保留字) 大全 转 其实这个东西可以在oracle 上输入一个sql语句就可以得到: select * from v$reserved_words order by keyw ...
- Codis作者黄东旭细说分布式Redis架构设计和踩过的那些坑们
转载自:http://www.open-open.com/lib/view/open1436360508098.html
- phpcms 留言板
相信很多用phpcms v9的站长都不是程序员,而我也是一个网页设计师,所以对制作模板还是可以对付的.但是一设计到自己写程序,就一个头两个大啦.之前公司的网站是用找别人 用dede cms做的,后来我 ...
- CSS之千变万化的Div
厂址:http://www.cnblogs.com/yunfeifei/p/4671930.html 一.div和css3在一起 .box1 { width: 100px; height: 100px ...