C 學習筆記(7)

2021-07-29 07:14:04 字數 1945 閱讀 8199

子類可以自動共享父類的資料結構和方法的機制,

單繼承:子類只繼承以父類的資料結構和方法。

多繼承:子類可以繼承多個父類的資料結構和方法(需小心二義性)。

不同類物件呼叫相同的方法可以產生不同的結果

class class_name;

permission_lable:許可權識別符號,可以是public、private、protected三個中的乙個。

private(預設為該型別):私有成員,只有同乙個類的其它成員或該類的「friend」類可以訪問這些成員。

protected:保護成員,只有同乙個類的其他成員或「friend」類或該類的子類可以訪問這些成員

public:公有成員,任何可以看到該類的地方都可以訪問這些成員。

在類中直接編寫的成員函式會被編譯成內聯函式,而在外部編寫的函式會被編譯成普通函式。

內聯函式優點:加快執行效率

缺點:造成程式體積龐大。

加了該修飾後,函式體內的**不能有任何修改類資料成員的**。

int get_value() const;
特點:

1.命名必須和類名完全相同

2.功能主要用於在類的物件建立時定義初始化成員的狀態。

3.沒有返回值,也不能用void來修飾。

4.建構函式不能被直接呼叫,必須通過new運算子在建立物件或直接定義物件時才會被自動呼叫。

5.建構函式可以省略

6.如果把建構函式定義為私有,責無法建立物件。

7.有回滾效果

8.不能為虛函式

class stu

string getname()

};stu::stu(int a, string n)

int _tmain(int argc, _tchar* argv)

1.預設建構函式

呼叫時不必給出實參,引數列表所有引數具有預設值

class stu

string getname()

};//預設引數不能重複定義

stu::stu(int a /*= 15*/, string n/* = "xiaoming"*/)

2.複製建構函式

物件間進行複製時會呼叫的建構函式。

如果未定義複製建構函式,編譯器會自動生成乙個複製建構函式,但是這個複製建構函式只能實現表層數值的複製,並不能實現堆空間資料的複製。如果類成員中存在指標,存在動態分配堆空間這種情況,那麼編譯器自動生成的複製建構函式就不合適了,需要使用者自己定義。

class stu

string getname()

};stu::stu(stu &s)

int _tmain(int argc, _tchar* argv)

3.深層複製建構函式

如何複製堆空間資料

class stu

string getname()

};stu::stu(stu &s)

leng = strlen(ht);

hometown = (char*)malloc(leng);

strcpy(hometown, ht);

}int _tmain(int argc, _tchar* argv)

如果使用編譯器預設的複製建構函式,那麼只是進行hometown指標的複製,兩個物件的hometown指標將指向同一記憶體區,當第乙個物件析構後,第二個物件將會指向乙個無效區域。

class stu

string getname()

};//具有初始化引數列表的建構函式

stu::stu(int a , string n) :age(a), name(n)

C 學習筆記7

目錄 1 聯編的概念 2 靜態聯編 3 動態聯編 4 虛函式 5 虛析構函式 6 純虛函式和抽象類 1 聯編的概念 聯編是指乙個電腦程式自身彼此關聯 使乙個源程式經過編譯 連線,成為乙個可執行程式 的過程,在這個聯編過程中,需要確定程式中的操作呼叫 函式呼叫 與執行該操作 函式 的 段之間的對映關係...

c 學習筆記(7)

設計立方體類 求出立方體面積和體積 分別用全域性函式和成員函式判斷兩個立方體是否相等 class cube intgetl void setw int ml intgetw void seth int ml intgeth intcalcultes intcalculatev 成員函式 只需要乙個輸...

c 學習筆記7

七 c 語言整合開發環境和程式除錯 程式開發的一般過程 c 的開發工具 editor compiler linker 編輯器 編譯器和聯結器 ide integrated developing environment,整合開發環境 microsoft visual c 2010 express mi...