问题标签 [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.
c++ - C++ 纯虚方法
考虑这个演示程序:
这给了我以下编译错误:
我希望调用 toobj.f()
会导致调用,Base::obj.f()
因为派生类没有定义它,然后会导致调用Derived::obj.f(0)
每个类 Base 中的定义。
我在这里做错了什么?有没有办法做到这一点?具体来说,我希望调用obj.f()
返回 10。
(另外请注意,我意识到我可以使用默认参数来解决这个问题,但这段代码只是我的问题的一个简明示例,所以请不要告诉我使用默认参数。)
谢谢。
c++ - 私有继承:如何创建基类的对象(具有纯虚方法)?
考虑以下代码:
在上面的代码中,我可以创建“派生”类型的对象。C++ 允许我从派生类中的“someMethod()”访问方法“methodDefinedInBase()”。但是,如何创建“Base”类型的对象?
谢谢,
毗湿奴。
c++ - 将函数的声明设置为 0 是什么意思?如何将整数分配给函数?
当我在窗口类中找到以下函数定义时,我正在浏览一个(不想命名)GUI Toolkit 的源代码,它封装了 Windows API:
这里发生了什么?如何将函数分配给整数?还是将其分配给NULL
? 如果要在 wndproc 中使用函数指针,是否需要这样做?
c++ - 子类中的纯虚声明
我有几个像这样的 C++ 接口:
请注意,ITose 实现了它们自己的方法,但也实现了来自其他接口的方法,所以想法是实现者IThose
需要同时实现这两者
问题:我需要重新申报doThesethings
吗IThose
?
如果没有,如果我这样做会发生什么?它会影响IThese
方法吗?
c++ - 将纯虚拟更改为虚拟并保持二进制兼容
我可以将纯虚拟函数(在基类中)更改为非纯函数,而不会遇到任何二进制兼容性问题吗?(Linux, GCC 4.1)
谢谢
c++ - C++ 子函数中的纯虚函数和未使用的参数
我有以下内容:
foo(...) 没有 Parent 实现,因为它是一个纯虚函数。父母说 foo 有两个向量参数。孩子用两个字符串参数正确地实现了它,但它们没有被使用。但是,某些 Parent 的孩子会使用这些参数,所以他们需要一直在那里。
有什么方法可以使用重载来允许给定子类中的 foo 没有参数,即使父级说它必须?
非常感谢。
c++ - 什么时候虚方法应该是纯的?
我找到了一些我正在处理的代码,并且想知道最好的设计实现是什么。
如果基类将方法定义为虚拟方法,但也实现了空主体,因此不需要派生类实现主体,是否应该改为纯方法?
- 当前代码。
- Idea1:提醒用户这个派生对象没有实现这个方法体。
- Idea2:强制派生类实现一个主体,无论是否为空。
您,可信赖的、了不起的 SO 人,怎么看?
Edit1:发布(并阅读答案)后,我意识到断言很糟糕!
c++ - 纯虚析构函数的目的是什么?
c++ - C++ map.clear() 纯虚方法运行时错误
我相信问题可能源于使用 boost::shared_ptrs 作为键值。
foo 和 bar 都不是抽象类。此时,在运行时,我将收到“调用纯虚拟方法”错误,我的程序将终止。我也尝试过遍历地图并使用 myMap.erase(iterator),这会产生相同的错误。
c++ - 访问实现不属于接口的接口的类的函数
我正在用 C++ 编写一个应用程序。我有一个定义了各种功能的接口:
然后我有一个实现此接口的类以及其他功能:
我现在想从我的单元测试中访问所有这 3 个函数。目前我正在使用:
这只会让我访问接口中定义的 2 个函数。如何在不在界面中定义函数 z() 的情况下访问它?