中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C++怎么在類體系中將抽象類定義成接口

發布時間:2021-11-25 16:07:26 來源:億速云 閱讀:148 作者:iii 欄目:大數據

本篇內容主要講解“C++怎么在類體系中將抽象類定義成接口”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“C++怎么在類體系中將抽象類定義成接口”吧!

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++怎么在類體系中將抽象類定義成接口”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

c++
AI

孟津县| 长丰县| 邢台市| 曲麻莱县| 昆山市| 普安县| 武汉市| 清徐县| 临江市| 阿鲁科尔沁旗| 新建县| 汉沽区| 娄底市| 塔河县| 黔西县| 屯昌县| 泰顺县| 剑阁县| 任丘市| 新野县| 云南省| 天祝| 郑州市| 罗平县| 鄂尔多斯市| 蓬安县| 崇州市| 普格县| 泸西县| 泽普县| 罗城| 泾川县| 梓潼县| 尉氏县| 宁国市| 高碑店市| 介休市| 宣威市| 祁门县| 丰镇市| 水城县|