7得票4回答
具有虚函数的问题

我有两个类: class x { public: virtual void hello() { std::cout << "x" << std::endl; } }; class y : public x { public: void hello...

13得票5回答
在C++中,覆盖现有的虚函数是否会破坏ABI?

我的库有两个类:一个基类和一个派生类。在当前版本的库中,基类有一个虚函数foo(),而派生类没有覆盖它。在下一个版本中,我想让派生类覆盖它。这会破坏ABI吗?我知道引入新的虚函数通常会破坏ABI,但这似乎是一个特殊情况。我的直觉是,这应该只是改变vtbl中的偏移量,而不是实际更改表的大小。 ...

12得票1回答
在UML类图中,如何表示一个纯虚函数?

我是一名学习C++的学生。我正在为我的程序创建一个涉及继承和抽象/具体类的UML类图,但我不太确定如何表示纯虚函数。非常感谢任何帮助!

17得票4回答
C++将未知类型传递给虚函数

我正在使用C++编写代码,并且想要将一个在运行时才能确定的未知类型(只在运行时被知晓)传递给一个纯虚函数:virtual void DoSomething(??? data); 其中DoSomething是派生类的一个纯虚函数的实现。 我原本计划使用模板,但结果表明虚函数和模板不能一起使用:...

11得票7回答
C#: 有没有办法在多态中跳过其中一个基类的调用?

class GrandParent { public virtual void Foo() { ... } } class Parent : GrandParent { public override void Foo() { base.Foo(); ...

8得票3回答
可重定位代码和虚函数表

在位置无关代码中如何实现虚函数? 我知道如果我的类有虚函数,编译器通常会为其生成一个包含所有虚函数地址的vtable,并将指向vtable的指针存储在我的类的每个对象中。 现在,如果我的代码是位置无关的,编译器无法知道虚函数(或任何函数)的地址。那么它会怎么做? 我想知道真正的编译器是如...

122得票8回答
如何在Python中实现虚方法?

我了解PHP或Java中的虚方法。 在Python中如何实现虚方法? 还是说我需要在抽象类中定义一个空方法并重写它?

9得票2回答
多重继承导致虚函数重载的模糊和不明确。

在这个例子中,类Foo和Bar是从一个库中提供的。我的类Baz继承了它们两个。 struct Foo { void do_stuff (int, int); }; struct Bar { virtual void do_stuff (float) = 0; }; str...

8得票1回答
所有未使用的未定义方法都是允许的吗?

这是一个含有未定义方法的类。编译器似乎允许构造该类的实例,只要未定义的成员函数从未被调用: struct A { void foo(); }; int main() { A a; // <-- Works in both VC2013 and g++ ...

268得票9回答
C++中派生类函数的"virtual"关键字,是否必要?

使用下面给出的结构定义...struct A { virtual void hello() = 0; }; 方法一:struct B : public A { virtual void hello() { ... } }; 方法二:struct B : public A { ...