为了账号安全,请及时绑定邮箱和手机立即绑定

如何在C+中声明接口?

如何在C+中声明接口?

C++ C
蝴蝶不菲 2019-06-20 16:03:22
如何在C+中声明接口?如何设置表示接口的类?这仅仅是一个抽象的基类吗?
查看完整描述

3 回答

?
饮歌长啸

TA贡献1951条经验 获得超3个赞

把答案扩展到布氏,您可能希望通过添加虚拟析构函数来对接口的纯虚拟方法列表做一个例外。这允许您将指针所有权传递给另一方,而无需公开具体的派生类。析构函数不需要做任何事情,因为接口没有任何具体成员。将函数定义为虚拟函数和内联函数似乎有些矛盾,但请相信我-事实并非如此。

class IDemo{
    public:
        virtual ~IDemo() {}
        virtual void OverrideMe() = 0;};class Parent{
    public:
        virtual ~Parent();};class Child : public Parent, public IDemo{
    public:
        virtual void OverrideMe()
        {
            //do stuff
        }};

您不需要为虚拟析构函数包括一个主体-结果是一些编译器在优化一个空析构函数时遇到了问题,最好使用默认设置。


查看完整回答
反对 回复 2019-06-20
?
猛跑小猪

TA贡献1858条经验 获得超8个赞

使用纯虚拟方法创建类。通过创建重写这些虚拟方法的另一个类来使用该接口。

纯虚拟方法是定义为虚拟并分配给0的类方法。

class IDemo{
    public:
        virtual ~IDemo() {}
        virtual void OverrideMe() = 0;};class Child : public IDemo{
    public:
        virtual void OverrideMe()
        {
            //do stuff
        }};


查看完整回答
反对 回复 2019-06-20
?
FFIVE

TA贡献1797条经验 获得超6个赞

除了C#/中的抽象基类之外,还有一个特殊的接口类型类别。爪哇因为C#/Java不支持多重继承。

C+支持多重继承,因此不需要特殊类型。没有非抽象(纯虚拟)方法的抽象基类在功能上等效于C#/Java接口。


查看完整回答
反对 回复 2019-06-20
  • 3 回答
  • 0 关注
  • 654 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号