C++ Primer 学习笔记_52_类与数据抽象 --构造函数(二)

2014-11-24 12:19:53 · 作者: · 浏览: 5
可以采用与初始化数组元素相同的方式初始化其成员:

struct Data
{
    int ival;
    char *ptr;
};

int main()
{
    Data val1 = {0,0};
    Data val2 = {1,"Hello World"};
}

缺点:

1)要求类的全体数据成员都是public。

2)将初始化每个对象的每个成员的负担放在程序员身上。这样的初始化是乏味且易于出错的,因为容易遗忘初始化式或提供不适当的初始化式。

3)如果增加或删除一个成员,必须找到所有的初始化并正确更新。

【最佳实践】

定义和使用构造函数几乎总是较好的。当我们为自己定义的类型提供一个默认构造函数时,允许编译器自动运行那个构造函数,以保证每个类对象在初次使用之前正确地初始化

    //P396 习题12.31
    //不能通过编译,为什么?
    pair
  
    p = {0,2};
    /*
    *因为pair类型定义了构造函数
    *所以尽管其数据成员为public,但还是不能显式的初始化
    */