扫码关注官方订阅号
c++ 父类方法中调用父类声明的纯虚函数,可以这样做吗?
业精于勤,荒于嬉;行成于思,毁于随。
可以
#include <iostream> class Base { public: void func() { virtualFunc(); } virtual void virtualFunc() = 0; }; class Derived : public Base { public: void virtualFunc() { std::cout << "xxx" << std::endl; } }; int main() { Derived d; d.func(); }
c++并没有说你不可以这样做,上面的回答已经告诉你答案了。
我这里想说的是,你想通过这样的设计达到什么样的目的。 1. 你的纯虚函数都是public的 个人认为,如果是这样情况,需要再仔细考虑一下,是不是必须这样做。是不是还有其他可替代方案,比如,在这个类的外部对这些功能进行整合。一个类的设计,它的public方法应该尽量设计成正交的才对(KISS)。如果你的新接口都是由public成员构成,你需要考虑一些后期维护问题,还有是不是方便对其做单元测试。 2. 你的纯虚函数不都是public的 我想你有足够的理由来创建这个新接口,但是还请尽量保持你接口功能的正交性。
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
可以
c++并没有说你不可以这样做,上面的回答已经告诉你答案了。
我这里想说的是,你想通过这样的设计达到什么样的目的。
1. 你的纯虚函数都是public的
个人认为,如果是这样情况,需要再仔细考虑一下,是不是必须这样做。是不是还有其他可替代方案,比如,在这个类的外部对这些功能进行整合。一个类的设计,它的public方法应该尽量设计成正交的才对(KISS)。如果你的新接口都是由public成员构成,你需要考虑一些后期维护问题,还有是不是方便对其做单元测试。
2. 你的纯虚函数不都是public的
我想你有足够的理由来创建这个新接口,但是还请尽量保持你接口功能的正交性。