空向量的构造函数列表初始化

pstatix

假定在类ctor上假设初始化一个空向量的合适方法(如果有的话):

class Temp {
    private:
        int vals;
        vector<int> A;
    public:
        Temp(int x);
};

所有这些似乎都有效,但是是否甚至有必要执行#1或#2,还是声明足够?

1:显式调用向量构造函数

Temp::Temp(int x):vals(x), A() { }

2:在类ctor列表初始化中使用向量列表初始化

Temp::Temp(int x):vals(x), A{} { }

3:从类ctor列表中排除初始化(仅声明)

Temp::Temp(int x):vals(x) { }

将向量成员包括在类ctor初始化列表中似乎没有任何值,因为在我们声明其默认构造函数并返回空向量时会调用它的默认构造函数。

埃德加·洛克詹(EdgarRokjān)

假定在类ctor上假设初始化一个空向量的合适方法(如果有)是哪种?

它们都是有效的。

这主要是风格问题。如果您确实想在构造函数成员初始化器列表中显式设置所有类成员,则可能包含初始化A以保持一致性,否则,std::vector将自动调用默认构造函数。

通常,只有需要某种非默认初始化的成员才能进入成员初始化器列表

在构成构造函数功能体的复合语句开始执行之前,所有直接基数,虚拟基数和非静态数据成员的初始化已完成。成员初始化程序列表是可以指定这些对象的非默认初始化的位置。对于无法默认初始化的成员(例如引用成员和const限定类型的成员),必须指定成员初始化程序。没有成员初始化程序的匿名联合或变体成员不执行任何初始化。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在构造函数中初始化空实例变量

在函数的参数列表中初始化的变量的范围

构造函数初始化列表评估顺序

空的构造函数,但实例变量仍在初始化?

初始化列表与向量

是什么导致此构造函数在接受初始化程序列表和向量时委托给自身?

构造函数初始化列表中的循环依赖

std :: list <std :: unique_ptr>:空的初始化列表与默认构造函数

C ++ 11使可变参数构造函数了解初始化列表的初始化列表

构造函数初始化器列表-可以工作吗?

std :: map初始化程序列表构造函数

具有成员初始化列表的显式副本构造函数中的空值

空的初始化程序列表作为参数不会调用默认构造函数

构造函数成员初始化列表说明

向量构造函数对:初始化列表与显式构造

使用构造函数的参数初始化向量成员

构造函数/函数声明参数列表中的统一初始化

将初始化列表传递给基于向量的构造函数

无法从委派构造函数的初始化列表中初始化向量

如何在varargs构造函数的初始值设定项列表中初始化向量?

在初始化列表中使用空构造函数初始化父类?

委派列出初始化的构造函数,空字段

检查初始化程序列表中的空向量

镖。子类和构造函数初始化器列表

在类构造函数中初始化const向量(C ++)

在 sfml 的构造函数中初始化向量数组

基本/默认构造函数与构造函数初始化列表

在构造函数初始化列表中使用 std::variant

在构造函数 C++ 中初始化结构向量