gpt4 book ai didi

c++ - 是否可以在基类构造函数之前运行成员初始值设定项?

转载 作者:太空狗 更新时间:2023-10-29 19:45:36 25 4
gpt4 key购买 nike

通常,可以通过更改成员在类中声明的顺序来更改成员初始值设定项的运行顺序。但是,有没有办法让基类初始化器/构造器不首先运行?

这是我的问题的最小草图:

class SpecialA : public A {
public:
explicit SpecialA(Arg* arg)
: member(expensiveFunction(arg))
, A(member) // <-- This will run first but I don't want it to
{}
private:
T member;
}

最佳答案

不,这是不可能的。类初始化总是这样:基类、成员、本类构造函数。

原因很简单 - 因为您可以在此类构造函数中引用您的成员,所以您必须在调用构造函数之前构造成员。由于您可以从您的成员引用您的基类成员,因此您必须在此类成员之前构造它们。

关于c++ - 是否可以在基类构造函数之前运行成员初始值设定项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34226455/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com