c++ 父类方法中调用父类声明的纯虚函数?
迷茫
迷茫 2017-04-17 11:40:05
[C++讨论组]

c++ 父类方法中调用父类声明的纯虚函数,可以这样做吗?

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全部回复(2)
大家讲道理

可以

#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();
}
ringa_lee

c++并没有说你不可以这样做,上面的回答已经告诉你答案了。

我这里想说的是,你想通过这样的设计达到什么样的目的。
1. 你的纯虚函数都是public的
个人认为,如果是这样情况,需要再仔细考虑一下,是不是必须这样做。是不是还有其他可替代方案,比如,在这个类的外部对这些功能进行整合。一个类的设计,它的public方法应该尽量设计成正交的才对(KISS)。如果你的新接口都是由public成员构成,你需要考虑一些后期维护问题,还有是不是方便对其做单元测试。
2. 你的纯虚函数不都是public的
我想你有足够的理由来创建这个新接口,但是还请尽量保持你接口功能的正交性。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号