当前位置:  开发笔记 > 编程语言 > 正文

默认初始化作为对象的数据成员?

如何解决《默认初始化作为对象的数据成员?》经验,为你挑选了1个好方法。

为什么必须在构造函数中初始化对象数据成员,并且不能像使用基本类型一样默认初始化它们?是否可以像原始类型一样初始化它们?

这是一个例子:

class foo {
    int a;
public:
    foo(int _a) :a(_a) {};
};

class bar {
    string a = "asdf";//no error
    int num = 1;//no error
    foo x(1); //error, why?
    foo z;
public:
    bar(): z(1){}//no error
};

Baum mit Aug.. 5

类内初始化程序仅使用operator=语法或使用大括号初始化程序列表,而不使用函数样式初始化.所以

foo x{1};

代替

foo x(1);

应该做的伎俩.

在您的情况下,您也可以使用

foo x = 1;

但如果这会破坏foo的构造采取单一的intexplicit.



1> Baum mit Aug..:

类内初始化程序仅使用operator=语法或使用大括号初始化程序列表,而不使用函数样式初始化.所以

foo x{1};

代替

foo x(1);

应该做的伎俩.

在您的情况下,您也可以使用

foo x = 1;

但如果这会破坏foo的构造采取单一的intexplicit.

推荐阅读
落单鸟人
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有