C ++虚函数忽略范围说明符

备份副本

请参考以下C ++代码:

#include <iostream>

class A {
public:
    virtual ~A() {}
    virtual void display() {
        std::cout << "Display A"  << std::endl;
    }
};

class B : public A {
    // ! NO 'display()' function in this class.
};

class C : public B {
public:
    void display() {
        std::cout << "Display C" << std::endl;
        B::display();
    }
};


int main(void) {
    A* ptr = new C();
    ptr->display();
    delete ptr;

    return 0;
}

是此程序的输出:

Display C 
Display A

由于未定义B :: display(),因此我希望该程序出现编译错误。

有人可以解释一下此代码的行为吗?

非常感谢您的宝贵时间!

詹姆斯·阿迪克森(James Adkison)

有人可以解释一下此代码的行为吗?

B简单地从继承display函数A因为,它是虚拟的,因此B可以将行为改写为不同的行为(即,如果需要不同的实现,则可以执行该实现,否则可以继承其继承的内容)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

C ++虚函数忽略范围说明符

来自分类Dev

C ++中忽略了挥发性说明符

来自分类Dev

挥发性说明符在C ++中被忽略

来自分类Dev

C ++中成员函数的const&,&和&&&说明符

来自分类Dev

C什么是函数说明符?就像_inline _NORETURN

来自分类Dev

C ++错误:预期类型说明符

来自分类Dev

C printf格式说明符%_fi

来自分类Dev

C ++错误:预期的类型说明符

来自分类Dev

声明C ++中的冲突说明符

来自分类Dev

C ++错误:预期类型说明符

来自分类Dev

C ++ / ENUM /类型名称/说明符

来自分类Dev

复杂格式说明符C

来自分类Dev

Objective-C“覆盖”说明符

来自分类Dev

C:动态格式说明符

来自分类Dev

虚函数实现中缺少类型说明符

来自分类Dev

C stdlib函数中的抽象格式说明符(例如,printf,scanf)

来自分类Dev

C语言中strftime()函数中的奇怪格式说明符

来自分类Dev

为什么虚拟函数会违反访问说明符?C ++

来自分类Dev

在回调中使用函数时 C++ 未知覆盖说明符

来自分类Dev

使用C中的格式说明符从fprinft中的char缓冲区读取特定范围的索引

来自分类Dev

可以使用C ++中的“重写和最终”说明符声明类的相同成员函数吗?

来自分类Dev

C ++ 11,`noexcept`说明符,定义与声明

来自分类Dev

C ++模板-指针中的预期类型说明符

来自分类Dev

在C ++中定义Unicode时的映射格式说明符?

来自分类Dev

关于C语言中的转换说明符

来自分类Dev

了解C#中的类的访问说明符

来自分类Dev

字段说明符如何在C中工作

来自分类Dev

C语言中的多个动态浮点格式说明符

来自分类Dev

通过模板的C ++类说明符alignas选项