類別設計工具中的C++ 類別- Visual Studio - Microsoft Learn

文章推薦指數: 80 %
投票人數:10人

瞭解C++ 類別及其支援方式,以及在類別設計工具中可以有多個繼承關聯性。

跳到主要內容 已不再支援此瀏覽器。

請升級至MicrosoftEdge,以利用最新功能、安全性更新和技術支援。

下載MicrosoftEdge 其他資訊 目錄 結束焦點模式 閱讀英文 儲存 目錄 閱讀英文 儲存 Twitter LinkedIn Facebook 電子郵件 目錄 類別設計工具中的C++類別 發行項 08/08/2022 10位參與者 本文內容 適用于:VisualStudioVisualStudioforMacVisualStudioCode 類別設計工具支援C++類別,並以視覺化VisualBasic和C#類別圖形的方式來視覺化原生C++類別,差異在於C++類別可以有多重繼承關聯性。

您可以展開類別圖形,以顯示類別中的更多欄位和方法,或將它摺疊以節省空間。

注意 類別設計工具不支援等位(特殊類型的類別,其中配置的記憶體只是聯集的最大資料成員)所需的數量。

簡單繼承 如果您將多個類別拖曳至類別圖表,而且類別具有類別繼承關聯性,則會使用箭號連接它們。

箭號會指向基底類別的方向。

例如,類別圖表中顯示下列類別時,會使用從B指向A的箭號連接它們: classA{}; classB:A{}; 您也可以只將類別B拖曳至類別圖表,並以滑鼠右鍵按一下B的類別圖形,然後按一下[顯示基底類別]。

這會顯示其基底類別:A。

多重繼承 類別設計工具支援多重類別繼承關聯性的視覺效果。

衍生類別有多個基底類別的屬性時,會使用「多重繼承」。

以下是多重繼承的範例: classBird{}; classSwimmer{}; classPenguin:publicBird,publicSwimmer{}; 如果您將多個類別拖曳至類別圖表,而且類別具有多重類別繼承關聯性,則會使用箭號連接它們。

箭號會指向基底類別的方向。

以滑鼠右鍵按一下類別圖形,然後按一下[顯示基底類別]會顯示所選取類別的基底類別。

注意 [顯示衍生類別]命令不支援用於C++程式碼。

您可以移至[類別檢視]、展開類型節點、展開[衍生類型]子資料夾,然後將這些類型拖曳至類別圖表,以顯示衍生類別。

如需多重類別繼承的詳細資訊,請參閱多重繼承和多重基底類別。

抽象類別 類別設計工具支援抽象類別(也稱為「抽象基類」)。

這些是您永遠不會具現化的類別,而是從中衍生其他類別的類別。

使用本文件稍早<多重繼承>中的範例,您可能會將Bird類別具現化為個別物件,如下所示︰ intmain() { Birdsparrow; Birdcrow; Birdeagle; } 不過,您可能不想要將Swimmer類別具現化為個別物件。

您可能只要從中衍生其他類型的動物類別;例如,Penguin、Whale和Fish。

在此情況下,您可以將Swimmer類別宣告為抽象基底類別。

若要將類別宣告為抽象,您可以使用abstract關鍵字。

標記為抽象或包括在抽象類別中的成員是虛擬的,而且必須由衍生自抽象類別的類別所實作。

classSwimmerabstract { virtualvoidswim(); voiddive(); }; 您也可以包括至少一個純虛擬函式,以將類別宣告為抽象︰ classSwimmer { virtualvoidswim()=0; voiddive(); }; 當您在類別圖表中顯示這些宣告時,類別名稱Swimmer和其純虛擬函式swim會以斜體顯示在抽象類別圖形中,以及標記法「抽象類別」。

請注意,抽象類別類型圖形與一般類別相同,差異在於其框線為點線。

衍生自抽象基底類別的類別必須覆寫基底類別中的每個純虛擬函式,否則無法具現化衍生類別。

因此,例如,如果Fish類別衍生自Swimmer類別,則Fish必須覆寫swim方法: classFish:publicSwimmer { voidswim(intspeed); }; intmain() { Fishguppy; } 當您在類別圖表中顯示此程式碼時,類別設計工具會將繼承線從Fish繪製到Swimmer。

匿名類別 類別設計工具支援匿名類別。

「匿名類別類型」是未宣告識別碼的類別。

它們不能有建構函式或解構函式、不能當成引數傳遞至函式,而且不能從函式當成傳回值傳回。

您可以使用匿名類別,將類別名稱取代為typedef名稱,如下列範例所示︰ typedefstruct { unsignedx; unsignedy; }POINT; 結構也可以是匿名的。

類別設計工具會顯示匿名類別和結構,與顯示各自的類型相同。

雖然您可以宣告及顯示匿名類別和結構,但類別設計工具不會使用您指定的標記名稱。

它會使用類別檢視所產生的名稱。

類別或結構會顯示在[類別檢視]和[類別設計工具]中,做為名為__unnamed的專案。

如需匿名類別的詳細資訊,請參閱匿名類別類型。

範本類別 類別設計工具支援範本類別的視覺效果。

支援巢狀宣告。

下表顯示一些典型宣告。

程式碼項目 類別設計工具檢視 templateclassA{}; A範本類別 templateclassA{}; A範本類別 templateclassA{}; A範本類別 templateclassU>classA{}; A範本類別 下表顯示一些部分特製化範例。

程式碼項目 類別設計工具檢視 templateclassA{}; A範本類別 templateclassA{}; A範本類別 templateclassA{}; A範本類別 templateclassA{}; A範本類別 下表顯示部分特製化中的一些繼承範例。

程式碼項目 類別設計工具檢視 templateclassA{};templateclassA{};classB:A{};classC:A{}; A範本類別B類別(指向類別A)C類別(指向類別A) 下表顯示一些部分特製化範本函式範例。

程式碼項目 類別設計工具檢視 classA{templatevoidfunc(Ta,Ub);templatevoidfunc(Ta,intb);}; Afunc(+1多載) templateclassA{templateclassB{};};template<>template<>classA::B{}; A範本類別B範本類別(B包含在「巢狀類型」的類別A內) templateclassC{};classA:C{}; A類別->CC範本類別 下表顯示一些範本繼承範例。

程式碼項目 類別設計工具檢視 templateclassC{};template<>classC{classB{};}classA:C::B{}; A類別->BC類別(B包含在「巢狀類型」的類別C內)C範本類別 下表顯示一些標準特製化類別連接範例。

程式碼項目 類別設計工具檢視 templateclassC{};template<>classC{};classA:C{};classD:C{}; A類別->CC類別C範本類別D類別->C classB{templateTmin(constT&a,constT&b);}; Bmin 另請參閱 使用C++程式碼 類別和結構 匿名類別類型 多重繼承 多個基類 範本 本文內容



請為這篇文章評分?