GeekBand C++面向對象高級編程(上)第三周筆記

復合:has a

構造由內而外:

Container的構造函數首先調用component的default(默認)構造函數,然后再執行自己的構造函數:

Container::container(...):component(){...};

析構由外而內:

Container的析構函數首先析構自己,然后再析構component:

Container::~container() {... ~component()};

Delegation:has a (composition by reference)

繼承:is a

構造由內而外:

Derived的構造函數首先調用Base的default(默認)構造函數,然后再執行自己的構造函數:

Derived::Derived(...):Base(){...};

析構由外而內:

Derived的析構函數首先析構自己,然后再析構Base:

Derived::~Derived() {... ~Base()};

Base class 的析構必須是虛析構

非虛函數:你不希望derived class重新定義

虛函數:你希望derived class重新定義,并且有默認定義

純虛函數:沒有默認定義,derived class必須重新定義

繼承函數是繼承調用權

子類對象調用父類函數:

1.conversion fnction:轉換函數

Class Fraction

{

public:

Fraction(int num,int den=1):m_numerator(num),m_denominator(den){}

operator double() const {

return (double)(m_numerator/m_denominator);

}

private:

int numerator;

int denominator;

};

Non-explicit-one-argument ctor:

Class Fraction{

Fraction operator +(const Fraction& f){

Return Fraction(...);

...}

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容