一.基本概念
- 抽象:是指對具體問題進行概括,抽出一類對象的公共性質并加以描述的過程;(包括資料抽象和行為抽象)
- 封裝:将抽象得到的資料和行為(或功能)相結合,形成一個有機的整體,也就是将資料與操作資料的函數代碼進行有機地結合,形成“類”,其中的資料和函數都是類的成員
- 繼承:特殊類的對象擁有其一般類的全部屬性與服務,稱作特殊類對一般類的繼承
- 多态1:指一段程式能夠處理多種類型對象的能力(包括強制多态、重載多态、類型參數化多态、包含多态)
- 多态2:指同樣的消息被不同類型的對象接收時導緻不同的行為(分為編譯時的多态和運作時的多态)
- 運算符重載:指對已有的運算符賦予多重含義,使同一個運算符作用于不同類型的資料時導緻不同的行為
- 靜态生存期:如果對象的生存期與程式的運作期相同,則稱它具有靜态生存期
二.代碼樣例:
class SonBase :public Base1, public Base2, public Base3 {
public:
SonBase(int a, int b,int c,int d):Base1(a),member1(c),Base2(b),member2(d) {
cout << "SonBase的構造函數" << endl;
}
private: //内嵌的基類對象
Base1 member1;
Base2 member2;
Base3 member3; //該對象所屬類無 有參構造函數
};
2.虛基類(繼承)
class Base1 :public Base {
public:
virtual void display() const; //子類對父類的虛函數的重寫,聲明時virtual關鍵字可加可不加
};
void Base1::display() const{ //實作時不可加
cout << "第一個子類Base1的重寫" << endl;
}
3.運算符重載
/*運算符重載*/
class Complex {
public:
Complex(double r = 0.0, double i = 0.0) {
real = r;
image = i;
}
void display() const;
Complex operator+(const Complex& c1) const; //成員函數(雙目)
friend Complex operator-(const Complex& c1, const Complex& c2); //非成員函數(雙目)
Complex operator++() const; //成員函數(單目前置)
Complex operator++(int) const; //成員函數(單目後置),聲明中形參名可省略不寫
private:
double real;
double image;
};
4.函數模闆
template<class T>
void my_swap(T &a, T &b) {
T c = a;
a = b;
b = c;
}