18得票2回答
我是否需要为第二个接口类添加虚析构函数?

我有叫做“Base”和“Derived”的类。 struct Base { Base() = default; virtual ~Base() = default; Base(const Base&) = delete; Base& opera...

11得票1回答
如何使用std::bind()来调用基类的虚函数版本?

我正在尝试使用std::bind()创建一个函数,该函数将调用基类版本的虚函数,而不是调用派生类的版本。 struct Base { virtual void foo() { cout << "Base\n"; } }; struct Derived : public...

15得票3回答
C++中Vptr和Vtable的机制

在C++中,进行动态绑定时,请考虑以下示例... class Base { virtual void fun() { cout<<"Base"; } }; class Derived : public Base { void fun() ...

22得票5回答
如何将C++中私有的纯虚函数重写为公共函数?

为什么会发生这种情况? http://coliru.stacked-crooked.com/a/e1376beff0c157a1class Base{ private: virtual void do_run() = 0; public: void run(){ ...

8得票4回答
当派生类没有覆盖虚函数时,为什么需要vptr?

class base { public: void virtual fn(int i) { cout << "base" << endl; } }; class der : public base{ public: vo...

14得票10回答
为什么不应过度使用虚函数?

我刚看到一篇文章,指出我们不应该过度使用虚函数。人们认为,较少的虚函数往往会有较少的错误,减少维护成本。 由于虚函数需要进行v表查找,可能比普通函数慢,这是我能想到的一个原因。 关于C++或Java的上下文,会有哪些虚函数的错误和缺点呢?

7得票3回答
虚函数与回调函数的区别

考虑这样一种情况,有两个类,即基类和派生类。如果基类想调用派生类的函数,则可以通过创建一个虚函数并在派生类中定义该VF或使用回调来实现。我想知道在这两个选项中应该选择哪一个?选择其中之一取决于哪些情况/条件? 编辑:问题澄清: 我所指的情况是有一个基类接收消息。这些不同的消息需要由派生类以...

17得票8回答
C++:为什么一个结构体或类需要虚函数才能实现多态?

根据这个问题,我想知道为什么在C++中一个结构体\类必须要有虚方法才能实现多态。 强制要求虚析构函数是有意义的,但如果没有任何析构函数的话,为什么必须要有虚方法呢?

20得票3回答
QWidget keyPressEvent重载

我现在已经尝试了半个世纪,试图在QT中覆盖QWidgets keyPressEvent函数,但它就是不起作用。我必须说我是CPP的新手,但我懂ObjC和标准C。 我的问题看起来像这样:class QSGameBoard : public QWidget { Q_OBJECT public:...

27得票6回答
C++中什么时候会创建虚函数表(vtable)?

编译器什么时候会创建虚函数表? 1) 当类至少包含一个虚函数。 或者 2) 当直接基类至少包含一个虚函数。 或者 3) 当任何级别的父类都至少包含一个虚函数。 与此相关的问题是:在C++继承体系中是否可能放弃动态分派? 例如,请考虑以下示例。#include <iostre...