C++怎么在类体系中将抽象类定义成接口

本篇内容主要讲解“C++怎么在类体系中将抽象类定义成接口”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C++怎么在类体系中将抽象类定义成接口”吧!

成都创新互联公司主营东风网站建设的网络公司,主营网站建设方案,app软件定制开发,东风h5重庆小程序开发公司搭建,东风网站营销推广欢迎东风等地区企业咨询

I.25: Prefer abstract classes as interfaces to class hierarchies(在类体系中将抽象类定义为接口会更好

译者注:

  1. 抽象类:不能直接生成示例的基类。

  2. 接口:不包含数据成员的抽象类。

Reason(原因)

Abstract classes are more likely to be stable than base classes with state.

抽象类有很大的可能比包含状态的基类更稳定。

译者注:结合全文,这里的抽象类应该指接口。

Example, bad(反面示例)

You just knew that Shape would turn up somewhere :-)

你只知道Shape会在某处表示:-)

class Shape {  // bad: interface class loaded with datapublic:    Point center() const { return c; }    virtual void draw() const;    virtual void rotate(int);    // ...private:    Point c;    vector<Point> outline;    Color col;};

这将强迫每个派生类都要计算中心位置-哪怕是那些特殊且中心从未不用的图形。类似的,也不是所有的图形都有颜色,很多图形最好不要包含一个有Points序列定义的轮廓线。发明抽象类就是为了鼓励用户写出下面的类:

class Shape {    // better: Shape is a pure interfacepublic:    virtual Point center() const = 0;   // pure virtual functions    virtual void draw() const = 0;    virtual void rotate(int) = 0;    // ...    // ... no data members ...    // ...    virtual ~Shape() = default;};
Enforcement(实施建议)

(Simple) Warn if a pointer/reference to a class C is assigned to a pointer/reference to a base of C and the base class contains data members.

(简单)如果指向类C的指针或引用被复制被C的基类类型的指针或引用,而且基类包含数据成员时,报警。

译者注:也就是说,大师的意见是:基类基本上抽象类就不要有数据成员了。

到此,相信大家对“C++怎么在类体系中将抽象类定义成接口”有了更深的了解,不妨来实际操作一番吧!这里是创新互联网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

当前标题:C++怎么在类体系中将抽象类定义成接口
URL标题:https://www.cdcxhl.com/article10/gdhcgo.html

成都网站建设公司_创新互联,为您提供小程序开发电子商务商城网站做网站网页设计公司网站内链

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

成都定制网站网页设计