gpt4 book ai didi

c++ - virtual void funcFoo() const = 0 和 virtual void funcFoo() = 0; 之间的区别

转载 作者:IT老高 更新时间:2023-10-28 21:37:47 24 4
gpt4 key购买 nike

我在 cpp 中有一个声明,其中函数如下:

virtual void funcFoo() const = 0;

我假设如果声明为显式,则可以被另一个类继承,但有什么区别

virtual void funcFoo() = 0;

对我来说改进我的编程很重要,我想知道其中的区别。我不希望由于继承错误而导致故障。

提前致谢。

最佳答案

第一个签名意味着可以在派生类型的 const 实例上调用该方法。第二个版本不能在 const 实例上调用。它们是不同的签名,因此通过实现第二个,您并没有实现或覆盖第一个版本。

struct Base {
virtual void foo() const = 0;
};

struct Derived : Base {
void foo() { ... } // does NOT implement the base class' foo() method.
};

关于c++ - virtual void funcFoo() const = 0 和 virtual void funcFoo() = 0; 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9974329/

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