26得票3回答
纯虚终函数:C++11中合法

class Foo { public: virtual int foo() final = 0; }; 编译通过。 Foo 只是浪费空间,并且可能是一个意外吗?还是我有所遗漏?

24得票2回答
私有和保护的纯虚函数之间有什么区别吗?

我可以理解为什么要将实现的(而非纯)虚函数声明为private或protected。据我所知,如果将已实现的虚方法声明为protected,则子类可以调用基类的方法(其他人无法调用)。如果将其声明为private,则只有基类可以调用虚方法的默认实现。 然而,在纯虚函数中,没有基础实现...那...

24得票8回答
C++中纯虚函数有什么用途?

我现在正在课堂上学习C ++,但是我不太理解纯虚函数。 我知道它们稍后会在派生类中概述,但如果您只是要在派生类中定义它,为什么要将其声明为等于0?

22得票4回答
保护CRTP模式免受在“纯虚拟”调用中的栈溢出攻击

考虑以下标准CRTP示例: #include <iostream> template<class Derived> struct Base { void f() { static_cast<Derived *>(this)->f(); } ...

22得票2回答
Python是否支持纯虚函数,以及是否值得使用?

我可能来自不同的思维方式,主要是C++程序员。这个问题涉及Python中的面向对象编程,更具体地说是纯虚方法。因此,从这个问题中我改编的代码,我正在查看这个基本示例。class Animal(): def speak(self): print("...") class...

21得票6回答
从构造函数和析构函数中调用纯虚函数

C++标准规定,在构造函数或析构函数中调用纯虚函数是被禁止的。这样做的原因是什么?为什么标准要设置这样的限制?

21得票4回答
为什么我在C++中派生类中必须重新声明被覆盖的函数?

假设我有以下代码:class Iinterface { virtual void abstractFunction()=0; }; class Derived : public Iinterface { void abstractFunction(); // Do I need th...

21得票2回答
无法声明变量“”为抽象类型“”。

编辑:花了一些时间理解我写的代码后,我仍然不知道它哪里出了问题。这是我派生类的基类:///ContactResultCallback is used to report contact points struct ContactResultCallback { short int ...

20得票4回答
纯虚析构函数的目的是什么?

可能的重复问题: 在什么情况下提供纯虚函数的实现是有利的? 为什么我们需要C ++中的纯虚析构函数? 当基类拥有纯虚析构函数时,编译器不会强制要求Child class实现析构函数。 struct Base { virtual void foo () = 0; virtual...

20得票4回答
为什么从构造函数中对纯虚函数进行虚拟调用是未定义行为,而对非纯虚函数的调用是被标准所允许的?

从标准中10.4节的抽象类第6段: “可以从抽象类的构造函数(或析构函数)调用成员函数;但直接或间接地为正在从这样的构造函数(或析构函数)创建(或销毁)的对象做出虚函数调用以调用纯虚函数时的效果是未定义的。” 如果标准允许在构造函数(或析构函数)中调用非纯虚函数,为什么会有这种差异? [...