網(wǎng)站建設(shè)制作視頻長沙seo步驟
構(gòu)造函數(shù) 與 析構(gòu)函數(shù)
構(gòu)造函數(shù)代表一個(gè)對象的生成,主要作用是初始化類的成員變量,可以被重載
如果沒有顯式構(gòu)造函數(shù),則實(shí)例化對象時(shí),系統(tǒng)會自動生成一個(gè)無參的構(gòu)造函數(shù)
構(gòu)造函數(shù)的名稱與類名相同
析構(gòu)函數(shù)代表的是一個(gè)對象的銷毀,不可以被重載
析構(gòu)函數(shù)的名稱是 ~類名()
class Animal
{
public:string name;int age;Animal():name("dog"), age(12) //顯式無參構(gòu)造函數(shù),這里借助c++11的列表初始化{cout << "這是無參構(gòu)造函數(shù)" << endl;}Animal(string name, int age) //顯式有參構(gòu)造函數(shù){this->name = name;this->age = age;cout << "這是有參構(gòu)造函數(shù)" << endl;}~Animal(){}; //析構(gòu)函數(shù)
};Animal dog1; //會調(diào)用無參構(gòu)造函數(shù)
Animal dog2("xiaohei",12); //會調(diào)用顯式有參構(gòu)造函數(shù)
注意事項(xiàng):構(gòu)造函數(shù)/析構(gòu)函數(shù) 如果顯式調(diào)用,則必須是public權(quán)限
C++封裝
作用:保證數(shù)據(jù)安全性
三種權(quán)限
public:類內(nèi)可以訪問 子類可以訪問 類外可以訪問
protected:類內(nèi)可以訪問 子類可以訪問 類外不可以訪問
private:類內(nèi)可以訪問 子類不可以訪問 類外不可以訪問
C++繼承
作用:實(shí)現(xiàn)代碼復(fù)用,節(jié)省代碼量
繼承中的構(gòu)造函數(shù)和析構(gòu)函數(shù)
class Animal
{
public:string name;int age;Animal():name("dog"), age(12){cout << "這是基類無參構(gòu)造函數(shù)" << endl;}Animal(string name, int age){this->name = name;this->age = age;cout << "這是基類有參構(gòu)造函數(shù)" << endl;}~Animal(){cout << "這是基類析構(gòu)函數(shù)" << endl;}
};class Dog:public Animal //公有繼承自Animal類
{
public:string name;int age;Dog(){cout << "這是Dog類無參構(gòu)造函數(shù)" << endl;}Dog(string name, int age){this->name = name;this->age = age;cout << "這是Dog類有參構(gòu)造函數(shù)" << endl;}~Dog(){cout << "這是Dog類析構(gòu)函數(shù)" << endl;}
};void Func1()
{Dog dog1();Dog dog2("小黑", 12);
}int main()
{Func1();system("pause");
}
基類的構(gòu)造函數(shù)和析構(gòu)函數(shù)不會繼承給派生類,但會在派生類生成對象時(shí)調(diào)用
構(gòu)造函數(shù)調(diào)用順序:先調(diào)用基類無參構(gòu)造函數(shù),再調(diào)用派生類的構(gòu)造函數(shù),如果想要調(diào)用基類的有參構(gòu)造函數(shù),需要顯式調(diào)用 Dog(string name, int age) : Animal(name, age)
析構(gòu)函數(shù)調(diào)用順序:先調(diào)用派生類析構(gòu)函數(shù),再調(diào)用基類析構(gòu)函數(shù)
順便講一下函數(shù)重載、函數(shù)重定義和函數(shù)重寫的區(qū)別
函數(shù)重載:函數(shù)名相同,函數(shù)參數(shù)列表不同(參數(shù)類型、參數(shù)順序、參數(shù)個(gè)數(shù)),通過傳入不同的實(shí)參,調(diào)用不同的函數(shù),執(zhí)行不同的功能
函數(shù)重定義:當(dāng)發(fā)生繼承關(guān)系的時(shí)候,子類和父類存在同名函數(shù),子類會 隱藏 父類的同名函數(shù),執(zhí)行自己的函數(shù)
函數(shù)重寫:當(dāng)發(fā)生繼承關(guān)系的時(shí)候,父類提供虛函數(shù),子類 重寫(覆蓋) 父類的虛函數(shù),展現(xiàn)的是子類的功能