温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

C++中怎么实现一个接口

发布时间:2021-08-06 15:50:39 来源:亿速云 阅读:258 作者:Leah 栏目:编程语言

C++中怎么实现一个接口,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

定理1:C++接口是依赖的终点。接口不需要依赖任何东西。

推论1:依赖C++接口是安全的。不会带来更多的依赖关系。

推论2:当我们需要依赖时,我们必须尽量做到:我们依赖的是接口。而不是实际的东西。

前面的WNS的例子中,是函数指针接口的应用。下面举出一个纯虚类的例子。

假设我们制作了一个对话框(MyDlg)。我在对话框上添加了一个控件(MyCtrl)。MyCtrl派生于一个基类MyCtrlBase,该Base类有一个虚函数:

virtual void OnClick() = 0;

该控件被点击的时候,则OnClick会被调用。现在的意图是,该控件被点击的时候,我的对话框发生某种变化,比如说,MyDlg::OnMyCtrlClick()被调用。这如何实现呢? 最常见的但是也是错误的方法如下首先是MyDlg:

class MyDlg : public MyDlgBase   {   public virtual void OnMyCtrlClick()   { … }   private: MyCtrl * m_myCtrl;    class MyCtrl : public MyCtrlBase   { public: virtual void OnClick();   private:   MyDlgCtrl *m_parentDlg; };

我确实实现了。但是这个实现方法真的很愚蠢。因为MyCtrl和MyDlg完全依赖了对方。任何一个都不能脱离对方而被重用。MyDlg依赖MyCtrl尚可以理解。因为这个对话框中含有这个控件。但是MyCtrl为何要依赖MyDlg呢?这是完全没有必要的。我自己是一个控件,没有理由理会我在哪个窗口里。

无论在哪个窗口里,都是一样的作用。 当对话框上有多个不同控件时,情况会更加复杂。最终的结果,导致全部的组件之间都互相依赖,没有任何一个部分是可以重用的。 正确的方法是抽象出一个接口。这个C++接口叫做“点击接收者”。

下面再举我们在Capsuit的开发中,碰到的一个问题。情况是这样的:我们的软件,要对计算机进行全面的检查。包括检查硬件,检查操作系统信息,检查注册表,检查进程,以及运行的服务等等,来判断当前计算机是否正常。

本人负责开发检查部分。这个部分的任务是,根据外部输入的需求,来调用相应的实际进行检查的函数。这些函数则由各个不同部门的同仁实现好。本人只要调用他们就可以了。

struct condition { string check_type; // 告诉我检查的类型, string param1; // 检查的参数,比如说是哪个注册表项要检查,等等 string param2; // 同上,都是取决于不同类型的检查而不同的参数 };

关于C++中怎么实现一个接口问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

c++
AI