日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C++抽象类

發布時間:2023/12/2 c/c++ 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++抽象类 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

概念

在面向對象的概念中,所有的對象都是通過類來描繪的,但是反過來,并不是所有的類都是用來描繪對象的,如果一個類中沒有包含足夠的信息來描繪一個具體的對象,這樣的類就是抽象類。

抽象類往往用來表征對問題領域進行分析、設計中得出的抽象概念,是對一系列看上去不同,但是本質上相同的具體概念的抽象。
通常在編程語句中用 abstract 修飾的類是抽象類。在C++中,含有純虛擬函數的類(即:包含至少一個純虛函數的類)稱為抽象類,它不能生成對象。派生自抽象類的類必須實現純虛函數或者它們必須也是抽象類。

抽象類是不完整的,它只能用作基類。在面向對象方法中,抽象類主要用來進行類型隱藏和充當全局變量的角色。

抽象類往往用來表征對問題領域進行分析、設計中得出的抽象概念,是對一系列看上去不同,但是本質上相同的具體概念的抽象。
參考來源

class?Account?{ public:Account(?double?d?);???virtual?double?GetBalance();???virtual?void?PrintBalance()?=?0;??? private:double?_balance; };

此聲明與上一個聲明的唯一區別是,PrintBalance?是用 pure 說明符 (= 0) 聲明的。

抽象類特點

  • 抽象類不能直接實例化,并且對抽象類使用 new 運算符會導致編譯時錯誤;

  • 抽象方法只能聲明于抽象類中,且不包含任何實現,派生類必須覆蓋它們;

  • 重要的是抽象類可以包括抽象方法,這是普通類所不能的,但同時也能包括普通的方法。

  • 限制

    • 變量或成員數據

    • 顯式轉換的類型

    • 自變量類型

    • 顯式轉換的類型

    • 函數返回類型

    可以為抽象類定義純虛函數,但是只能通過使用以下語法直接調用:

    抽象類名稱::函數名稱()

    這有助于設計基類包括純虛析構函數的類層次結構,因為在銷毀對象的過程中始終會調用基類析構函數。請考慮以下示例:

    //?用純虛函數聲明一個抽象基類. //?deriv_RestrictionsonUsingAbstractClasses.cpp class?base?{ public:base()?{}virtual?~base()=0; };//?Provide?a?definition?for?destructor. base::~base()?{}class?derived:public?base?{ public:derived()?{}~derived(){} };int?main()?{derived?*pDerived?=?new?derived;delete?pDerived; }

    刪除?pDerived?指向的對象時,將調用類?derived?的析構函數,然后調用類?base的析構函數。純虛函數的空實現確保至少函數的某個實現存在。

    在前面的示例中,純虛函數?base::~base?是從?derived::~derived?隱式調用的。

    也可使用完全限定的成員函數名稱顯式調用純虛函數。

    參考鏈接

    C++接口與抽象類

    接口是一個概念。它在C++中用抽象類來實現,在C#和Java中用interface來實現。

    與抽象類的關系

    • 包含未實現的方法聲明;

    • 不能實例化;

    • 派生類必須實現未實現的方法,抽象類是抽象方法,接口則是所有成員(不僅是方法包括其他成員)。

    與抽象類的區別

    - 抽象類當中可以存在非抽象的方法,可接口不能,且它里面的方法只是一個聲明必須用public來修飾沒有具體實現的方法。

    • 抽象類是對象的抽象,然而接口是一種行為規范。

    • 抽象類中的成員變量可以被不同的修飾符來修飾,可接口中的成員變量默認的都是靜態常量(static final)。

    • 接口基本上不具備繼承的任何具體特點,它僅僅承諾了能夠調用的方法; 而類可以實現無限個接口,但僅能從一個抽象(或任何其他類型)類繼承,從抽象類派生的類仍可實現接口,從而得出接口是用來解決多重繼承問題的。

    聲明:

    本文于網絡整理,版權歸原作者所有,如來源信息有誤或侵犯權益,請聯系我們刪除或授權事宜。

    總結

    以上是生活随笔為你收集整理的C++抽象类的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。