问题标签 [pure-virtual]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
2715 浏览

c++ - C++ 纯虚方法

考虑这个演示程序:

这给了我以下编译错误:

我希望调用 toobj.f()会导致调用,Base::obj.f()因为派生类没有定义它,然后会导致调用Derived::obj.f(0)每个类 Base 中的定义。

我在这里做错了什么?有没有办法做到这一点?具体来说,我希望调用obj.f()返回 10。

(另外请注意,我意识到我可以使用默认参数来解决这个问题,但这段代码只是我的问题的一个简明示例,所以请不要告诉我使用默认参数。)

谢谢。

0 投票
3 回答
268 浏览

c++ - 私有继承:如何创建基类的对象(具有纯虚方法)?

考虑以下代码:

在上面的代码中,我可以创建“派生”类型的对象。C++ 允许我从派生类中的“someMethod()”访问方法“methodDefinedInBase()”。但是,如何创建“Base”类型的对象?

谢谢,

毗湿奴。

0 投票
3 回答
23396 浏览

c++ - 将函数的声明设置为 0 是什么意思?如何将整数分配给函数?

当我在窗口类中找到以下函数定义时,我正在浏览一个(不想命名)GUI Toolkit 的源代码,它封装了 Windows API:

这里发生了什么?如何将函数分配给整数?还是将其分配给NULL? 如果要在 wndproc 中使用函数指针,是否需要这样做?

0 投票
2 回答
871 浏览

c++ - 子类中的纯虚声明

我有几个像这样的 C++ 接口:

请注意,ITose 实现了它们自己的方法,但也实现了来自其他接口的方法,所以想法是实现者IThose需要同时实现这两者

问题:我需要重新申报doThesethingsIThose

如果没有,如果我这样做会发生什么?它会影响IThese方法吗?

0 投票
2 回答
304 浏览

c++ - 将纯虚拟更改为虚拟并保持二进制兼容

我可以将纯虚拟函数(在基类中)更改为非纯函数,而不会遇到任何二进制兼容性问题吗?(Linux, GCC 4.1)

谢谢

0 投票
1 回答
2056 浏览

c++ - C++ 子函数中的纯虚函数和未使用的参数

我有以下内容:

foo(...) 没有 Parent 实现,因为它是一个纯虚函数。父母说 foo 有两个向量参数。孩子用两个字符串参数正确地实现了它,但它们没有被使用。但是,某些 Parent 的孩子会使用这些参数,所以他们需要一直在那里。

有什么方法可以使用重载来允许给定子类中的 foo 没有参数,即使父级说它必须?

非常感谢。

0 投票
10 回答
1079 浏览

c++ - 什么时候虚方法应该是纯的?

我找到了一些我正在处理的代码,并且想知道最好的设计实现是什么。

如果基类将方法定义为虚拟方法,但也实现了空主体,因此不需要派生类实现主体,是否应该改为纯方法?

  1. 当前代码。
  2. Idea1:提醒用户这个派生对象没有实现这个方法体。
  3. Idea2:强制派生类实现一个主体,无论是否为空。

您,可信赖的、了不起的 SO 人,怎么看?


Edit1:发布(并阅读答案)后,我意识到断言很糟糕!

0 投票
4 回答
3487 浏览

c++ - 纯虚析构函数的目的是什么?

可能的重复:
在什么情况下给出一个纯虚函数的实现是有利的?
为什么我们需要 C++ 中的纯虚析构函数?

当编译器具有纯析构函数时,编译器不会强制Child class实现析构函数。Basevirtual

有趣的是;编译器宁愿强制Base定义一个析构函数体。这是明白的。(演示供参考)

那么在课堂上使用析构函数的目的是什么?(仅仅是为了禁止创建对象吗?)virtualBaseBase

0 投票
1 回答
394 浏览

c++ - C++ map.clear() 纯虚方法运行时错误

我相信问题可能源于使用 boost::shared_ptrs 作为键值。

foo 和 bar 都不是抽象类。此时,在运行时,我将收到“调用纯虚拟方法”错误,我的程序将终止。我也尝试过遍历地图并使用 myMap.erase(iterator),这会产生相同的错误。

0 投票
3 回答
79 浏览

c++ - 访问实现不属于接口的接口的类的函数

我正在用 C++ 编写一个应用程序。我有一个定义了各种功能的接口:

然后我有一个实现此接口的类以及其他功能:

我现在想从我的单元测试中访问所有这 3 个函数。目前我正在使用:

这只会让我访问接口中定义的 2 个函数。如何在不在界面中定义函数 z() 的情况下访问它?