集合初始化需要注意的一个问题

来源:互联网 发布:js获取数组变成地址 编辑:程序博客网 时间:2024/05/17 06:33
集合就是多个事物聚集在一起的总体,集合包括数组、结构体、类
对于内部类型数组,我们可以这样定义

int a[5] = {1,2,3,4,5};int b[5] = {0};int c[] = {1,2,3,4,5};


对于一个结构体,我们也可以使用{}初始方式,如下

struct X{int i;float f;};X x1 = {1,1.1};X x2[3] = {{1,1.1},{2,2.2}}//第三个对象会初始化为0


但如果我们的类中有私有成员,或者所有的成员变量都是公有成员但存在有构造函数,我们就不能简单的使用{}初始化方法了,所有的初始化工作必须通过构造函数完成

#include <iostream>using namespace std;class X{public:int i;float f;X(){ cout << "默认构造函数" << endl; }X(int e, float q):i(e), f(q) { cout << "构造函数" << endl; }};int main(){//X a = {0,0};  //编译出错,因为需要调用构造函数才能初始化X b[2];  //使用默认构造函数进行初始化X c[3] = {X(1,1.1), X(2,2.2)};//使用一般构造函数进行初始化return 1;}
运行结果:
默认构造函数
默认构造函数
构造函数
构造函数
默认构造函数


通过辨识类和结构体的初始化方式的不同,可以认为类并不是一个严格意义上的集合

原创粉丝点击