如何在继承类之前初始化成员变量

我正在尝试创建一个需要首先初始化成员变量的类。我知道为什么会发生这种情况,但是有没有办法解决这个问题?

当前打印顺序:第二优先

想要的打印顺序:第一秒

#include <iostream>

struct A {
    A() {
        std::cout << "first" << 'n';
    }
};

struct B {
    B() {
        std::cout << "second" << 'n';
    }
};

struct C : public B {

    C() : a(), B() {

    }

    A a;

};

int main() {

    C c;

    return 0;
} 

回答

将需要首先初始化的成员粘贴到结构中,然后在B.

struct A {
    A() { std::cout << "first" << 'n'; }
};

struct B {
    B() { std::cout << "second" << 'n'; }
};

struct Members { A a; };

struct C : private Members, public B {
    C() : Members(), B() {}
};

int main() {
    C c;
} 

这样做的缺点是无法避免将“成员结构”暴露给外部世界,但这在实践中不应该成为问题。


以上是如何在继承类之前初始化成员变量的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>