類和物件的初步認識:
1.類是物件的抽象,而物件是類的具體例項
類是抽象的,不占用記憶體;而物件是具體的,占用儲存空間
2.面向過程與物件導向
c語言是面向過程的,關注的是過程中的資料與方法
c++語言是物件導向的,關注的是物件的屬性與功能
類的引入:
在c++中,結構體內不僅可以定義變數,還可以定義函式
struct student
};void test()
類的定義:
class classnameclass為定義類的關鍵字,classname為類的名字,{}中為類的主體,注意類定義結束時後面帶分號。類中的元素稱為類的成員,類中的資料稱為類的屬性或者類的成員變數;類中的函式稱為類的方法或者類的成員函式;
類的兩種定義方式:
1.類的宣告和定義全部放在累體中
class person2.類的宣告放在 .h 檔案中,類的定義放在 .cpp 檔案中private:
char* _name;
char* _***;
int _age;
};
class person;
void person::showinfo() //在類體外定義成員,需要使用 :: 作用域解析符指明成員屬於哪個類域。類的訪問限定符及封裝:
訪問限定符:
public(共有);private(私有);protected(保護)
訪問限定符說明:
1. public成員在類外可以直接訪問;
2. protected和private成員在類外不能夠訪問
3. 它們的作用域從該訪問限定符出現的位置開始直到下乙個訪問限定符出現時為止
4. class定義的類體中如果沒有定義限定符,則預設訪問許可權是private;struct預設為為public型(因為struct要相容c)
注意:訪問限定符只在編譯時有用,當資料對映到記憶體後,沒有任何訪問限定符上的區別
封裝:隱藏物件的屬性和實現細節,僅對外公開介面和物件進行互動,將資料和運算元據的方法進行有機結合
類的作用域:
類定義了乙個新的作用域,類的所有成員都必須在類的作用域中
在類體外定義成員,需要使用 :: 作用域解析符指明成員屬於哪個類域
在類的作用域外,只能夠通過物件(或指標)借助成員訪問操作符.和->來訪問類成員
在使用乙個變數前,必須先要對變數進行宣告,這裡需要注意的是,類的成員變數在類中具有全域性作用域
類的例項化:
用類型別建立物件的過程,稱為類的例項化
1. 類只是乙個模型一樣的東西,限定了類有哪些成員,定義出乙個類並沒有分配實際的記憶體空間來儲存它
2. 乙個類可以例項化出多個物件,例項化出的物件 占用實際的物理空間 儲存 類成員變數
3. 做個比方。類例項化出物件就像現實中使用建築設計圖建造出房子,類就像是設計圖,只設計出需要什麼東 西,但是並沒有實體的建築存在,同樣類也只是乙個設計,例項化出的物件才能實際儲存資料,占用物理空間
**舉例:
//student 是乙個已經定義好的學生類類的物件大小的計算:void test()
問題: 類中既可以有成員變數,又可以有成員函式,那麼乙個類的物件中包含了什麼?如何計算乙個類的大小?
儲存方式:
只儲存物件的具體成員變數,所有成員函式放在統一的**公共區
下面通過例項來看看類大小的計算:
//類中既有成員變數,又有成員函式
class a
void f2()
{}private:
int _a;
};//sizeof(a) = 4
//類中只有成員函式
class b
void f2()
{}};
//sizeof(b) = 1
//空類
class c
;//sizeof(c) = 1
乙個類的大小,實際就是該類中」成員變數」之和,當然也要遵循記憶體對齊原則,空模擬較特殊,編譯器給了空類乙個位元組來唯一標識這個類
類成員函式的 this 指標:
1. 每個成員函式都有乙個指標形參,它的名字是固定的,稱為this指標,this指標是隱式的
2. 編譯器會對成員函式進行處理,在物件呼叫成員函式時,物件位址作實參傳遞給成員函式的第乙個形參this指 針
3.this指標是成員函式隱含指標形參,是編譯器自己處理的,我們不能在成員函式的形參中新增this指標的引數,定義時,也不能在呼叫時顯示傳遞物件的位址給this指標
上圖中綠色部分的 this 是可以顯示寫出來的。
標準C 語言 類和物件
物件就是類這種資料型別建立出的例項,相當於結構變數 class student student stu class 類名 繼承方式 父類 析構函式 類名 void 注意 建構函式此處需要檢視例子 物件的建立過程 注意 要保證建構函式 所需要的一切資源和先決條件在該 執行前已經準備充分,並得到正確的初...
C 類和物件 類和物件
c 中物件的型別稱為類,類代表了某一批物件的共性和特徵,類是物件的抽象,而物件是類的具體例項,類是抽象的,不占用記憶體,而物件是具體的,占用 儲存空間,這點很重要,讀者需要牢記。類是使用者自己指定的型別,如果程式中要用到類型別,必須自己根據需要進行宣告,或者使用別人已設計好的類,c 標準本身並不提供...
C 語言基礎 3 類和物件
類是建立物件的模板,乙個類可以建立多個物件,每個物件都是類型別的乙個變數 建立物件的過程也叫類的例項化。每個物件都是類的乙個具體例項 instance 擁有類的成員變數和成員函式。乙個簡單的類的定義 class student class是 c 中新增的關鍵字,專門用來定義類。student是類的名...