作者热门文章
- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我在 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/
我在 cpp 中有一个声明,其中函数如下: virtual void funcFoo() const = 0; 我假设如果声明为显式,则可以被另一个类继承,但有什么区别 virtual void fu
[我找不到合适的答案。如果已经回答,请将我指向正确的链接。] 我知道做这样的事情是违法的, class Base { public: virtual void funcFoo() = 0 {}
我是一名优秀的程序员,十分优秀!