gpt4 book ai didi

c++ - 我可以在构造函数中调用虚函数吗?

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

我知道在构造函数中调用虚函数会导致未定义的行为。但是,用作用域修饰符调用虚函数就可以了吗?

class A
{

public:
A() { A::f(); }
virtual void f();

};

class B
{

public:
B() { B::f(); }
virtual void f();

};

我觉得和调用非虚函数没什么区别,没有任何问题。这样对吗?还是我忽略了什么?

最佳答案

您可以调用 A::f()A::A()B::f()B::B() .当使用显式限定调用函数时,不使用虚拟调用机制。

这是标准草案关于在调用虚函数时使用显式限定的说法:

10.3/15 Explicit qualification with the scope operator (5.1) suppresses the virtual call mechanism. [ Example:

class B { public: virtual void f(); };
class D : public B { public: void f(); };
void D::f() { / ... / B::f(); }

Here, the function call in D::f really does call B::f and not D::f. —end example ]

关于c++ - 我可以在构造函数中调用虚函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24707296/

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