您好,登錄后才能下訂單哦!
本篇內容主要講解“C++怎么在類體系中將抽象類定義成接口”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“C++怎么在類體系中將抽象類定義成接口”吧!
譯者注:
抽象類:不能直接生成示例的基類。
接口:不包含數據成員的抽象類。
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;};
(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++怎么在類體系中將抽象類定義成接口”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。