具有某種身份的事物就是物件在應用領域中有意義的、與所要解決的問題有關係的任何事物都可以作為物件,它既可以是具體的物理實體的抽象,也可以是人為的概念,或者是人和有明確邊界和意義的東西。任何事物都可以用物件來進行描述——萬物皆物件。
物件是一組資料以及對這組資料有關操作組合封裝的實體,這組資料也可以稱為物件的具體屬性,例如人的身高、體重;有關操作可以理解為物件的行為,如,讀書、寫字
物件具有唯一性,正如世界上沒有相同的樹葉一樣,每個物件都是獨一無二的。在c++中,每個物件都有自身唯一的標識,通過這種標識,可找到相應的物件。在物件的整個生命期中,它的標識都不改變,不同的物件不能有相同的標識。
具有相同屬性(資料元素)和行為(功能)的物件的抽象就是類類的實質是一種資料型別,由使用者自定義的資料型別。在程式設計中,類不能直接進行操作,需要用類定義具體的物件,對這物件進行操作。類是物件的抽象,物件是類的實現。
封裝性
將資料和操作封裝為乙個有機的整體,由於類中私有成員都是隱藏的,只向外部提供有限的介面,所以能夠保證內部的高內聚性和與外部的低耦合性。繼承性
繼承性更符合認知規律,使程式更易於理解,同時節省不必要的重複**。多型性
同一操作作用於不同物件,可以有不同的解釋,產生不同的執行結果。c++中的類與c語言中的結構體非常相似,區別是類由class開頭,結構體由struct開始,最重要的就是類中的資料及操作預設為私有,不特別規定不能呼叫,結構體則相反,另外關於建構函式以及析構函式等下面講。
類由資料成員以及在資料成員進行操作的方法組成
那麼編譯器將會報錯,因為指代不明class test//類名
void getabc()//公有成員方法
this指標不是我們定義的,在物件建立時由編譯器自動生成,this的使用範圍只限於類內成員函式中使用
類定義好了,我們要使用它,但是類的本質是一種資料型別,我們並不能直接對類進行操作,參照結構體 我們可以使用類名來定義乙個變數,這個變數就叫做物件。在建立變數的時候都可以進行初始化,對資料進行初步賦值,物件當然也可以進行初始化,c++為我們提供了建構函式
其實無論test 還是test2 類,編譯器都自動加上了建構函式,這是類的必要組成部分,我們不寫當然不會報錯,編譯器會幫我們加上乙個預設的建構函式
建構函式與類名相同,沒有返回型別,乙個類中可以編寫多個引數列表不同的建構函式——建構函式支援過載,另外建構函式支援引數列表初始化
析構函式與建構函式相反,當物件結束其生命週期時(例如物件所在的函式已呼叫完畢),系統自動執行析構函式。析構函式往往用來做「清理善後」 的工作(例如在建立物件時用new開闢了一片記憶體空間,delete會自動呼叫析構函式後釋放記憶體)。test2()
test2(int a, int b)
test2(int a, int b, int c):a(a),b(b),c(c){}
~test2(){}
通過繼承機制,可以利用已有的資料型別來定義新的資料型別。所定義的新的資料型別不僅擁有新定義的成員,而且還同時擁有舊的成員。我們稱已存在的用來派生新類的類為基類,又稱為父類。由已存在的類派生出的新類稱為派生類,又稱為子類。
繼承有三種繼承方式,公有繼承(public)、保護繼承(protected)、私有繼承(private)
公有繼承(public):
公有繼承的特點是基類的公有成員和保護成員作為派生類的成員時,它們都保持原有的狀態,而基類的私有成員仍然是私有的,不能被這個派生類的子類所訪問。
私有繼承(private):
私有繼承的特點是基類的公有成員和保護成員都作為派生類的私有成員,並且不能被這個派生類的子類所訪問。
保護繼承(protected):
保護繼承的特點是基類的所有公有成員和保護成員都成為派生類的保護成員,並且只能被它的派生類成員函式或友元訪問,基類的私有成員仍然是私有的。
下面列出三種不同的繼承方式的基類特性和派生類特性。
繼承格式public protected private
公有繼承 public protected 不可見
私有繼承 private private 不可見
保護繼承 protected protected 不可見
class test3:public test2
;
C 基礎之類的嘗試
一般來說,乙個類要對應於乙個.件和乙個.cpp檔案,其中.件用於宣告類,而.cpp檔案用於定義類中的函式 例 ticketmachine.h pragma once class ticketmachine 售票機類 ticketmachine.cpp include ticketmachine.h ...
c語言基礎(六)之型別
多級指標簡單demo main 函式指標demo int add int x,int y main c語言結構體 使用struct關鍵字。事例demo struct person main printf age d n p.age printf 結構體的長度 d n sizeof p c語言聯合體 ...
C 基礎知識之類繼承
using system using system.collections.generic using system.linq using system.text namespace classinherit set pubic修飾,它的子類繼承得到 public void shout class ...