子類可以自動共享父類的資料結構和方法的機制,
單繼承:子類只繼承以父類的資料結構和方法。
多繼承:子類可以繼承多個父類的資料結構和方法(需小心二義性)。
不同類物件呼叫相同的方法可以產生不同的結果
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...