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 构造函数初始化列表以一个冒号开始,接着是以逗号分隔的数据成员列表,每个数据成员后面跟 ...
随机推荐
- C#基础视频教程3.1 常见控件类型和使用方法
可以从左侧的工具箱中找到常见的控件(你要在Form1这种窗体上) 为了方便你也可以把工具箱整个拖过去,这样从上到下控件都给你排好了 对于按钮来说,最常见的就是他的背景颜色,文字,字体,还有是否 ...
- ExplorerControls的显示问题
我们都知道ArcGIS桌面版本"添加数据"的功能是弹出一选择对话框,如下图所示,但我们总想搞自己的,以便融入自己的风格.下图左边是ArcGIS自带的"添加数据" ...
- linux&shell
Linux经常使用命令 登录时显示信息放在/etc/motd和/etc/profile.d/xxx.sh motd放置字符串 profile.d下放置脚本文件 echo echo -e 处理特殊字符. ...
- python发送邮件实例1
文件形式的邮件 #!/usr/bin/env python3 #coding: utf-8 import smtplib from email.mime.text import MIMEText fr ...
- Absolute positioning
The programmer specifies the position and the size of each widget in pixels. When you use absolute p ...
- Java之开发工具(1) - Eclipse 如何设置注释的模板
最常用的注释就是对类的说明和方法的说明,关于这类代码的注释方式,在Eclipse中可以这样进行设置: windows---preferences...---java--code style--code ...
- C语言的不完整类型和前置声明(转)
声明与定义(Declaration and Definition) 开始这篇文章之前,我们先弄懂变量的declaration和definition的区别,即变量的声明和定义的区别. 一般情况下,我们这 ...
- GridView的点击事件冲突解决
在开发的时候,常常可能遇到ListView或GridView控件点击事件与Item点击事件冲突的问题.原因是Item布局中的button或ImageButton强制获取了item的焦点,解决方案之中的 ...
- 演示unity内存管理机制的缺陷
概述 这是最近做项目时发现的一个内存管理机制上的一个缺陷,但是我并不知道这究竟是不是一个bug,因为他可以造成内存泄漏,但是却能避开野指针. 详细 代码下载:http://www.demodashi. ...
- Android 使用Post方式提交数据
在Android中,提供了标准Java接口HttpURLConnection和Apache接口HttpClient,为客户端HTTP编程提供了丰富的支持. 在HTTP通信中使用最多的就是GET和POS ...