当前位置:编程学习 > C/C++ >>

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

集合就是多个事物聚集在一起的总体,集合包括数组、结构体、类

对于内部类型数组,我们可以这样定义

 

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; 

运行结果:

默认构造函数

默认构造函数

构造函数

构造函数

默认构造函数

 

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

 

作者 yucan1001

补充:软件开发 , C语言 ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,