gpt4 book ai didi

c++ - 从成员初始化程序列表中调用基本方法

转载 作者:行者123 更新时间:2023-12-02 10:11:22 26 4
gpt4 key购买 nike

从成员初始化程序列表中调用非虚拟基本方法是否安全?和虚拟的?

最佳答案

在初始化所有基础之前,调用任何成员函数(虚拟的或非虚拟的)是不安全的。下面是标准([class.base.init]§16)中给出的示例:

class A {
public:
A(int);
};

class B : public A {
int j;
public:
int f();
B() : A(f()), // undefined behavior: calls member function but base A not yet initialized
j(f()) { } // well-defined: bases are all initialized
};

class C {
public:
C(int);
};

class D : public B, C {
int i;
public:
D() : C(f()), // undefined behavior: calls member function but base C not yet initialized
i(f()) { } // well-defined: bases are all initialized
};
还有更多的 subtle cases

关于c++ - 从成员初始化程序列表中调用基本方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63391060/

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