類和物件基礎知識
阿新 • • 發佈:2019-01-06
1.類和物件的基礎知識
定義:類就可以看做是對相似事物的抽象
訪問限定符:public,private,protect
封裝性:
1)良好的封裝能夠減少耦合。
2)類內部的結構可以自由修改。
3)可以對成員進行更精確的控制。
4)隱藏實現細節
物件大小計算:只計算非靜態成員變數(公有私有都算), 不算函式,和static變數,有記憶體對齊,空間換時間
2.四個預設成員函式,運算子過載
1)建構函式:初始化物件
無返回值
與類同名
例項化時自動呼叫
可過載
只要定義了建構函式,系統不會預設生成
無參建構函式,全預設建構函式,都叫預設建構函式
預設建構函式只能有一個,可以半預設
可在類外定義
2)拷貝建構函式:特殊的建構函式
拷貝構造是建構函式的過載
自己寫拷貝構造時候引數要傳引用,否則無窮遞迴
3)解構函式:清理工作
物件生命週期結束時自動呼叫
類名前面加~
不刪除物件,而是做一些清理工作,關閉檔案,釋放動態開闢等
4)賦值運算子的過載
兩個物件都存在時才會有賦值運算子過載
d1和d2兩個日期類都存在,d1=d2是賦值運算子過載
Date d2 = d1;這是拷貝構造,因為d2不是已經存在的
運算子過載
不能過載的5個運算子: .* :: sz ?: .
3.隱含的this指標
非靜態成員函式第一個引數都是this指標
public: void Display(Date *this)
cout<<this->_year;
main: Date d1; d1.Display(&d1);
4.運算子過載背後做的事情
兩個日期類 d1 == d2
編譯器會處理成 d1.operator==(&d1,d2);
定義:類就可以看做是對相似事物的抽象
訪問限定符:public,private,protect
封裝性:
1)良好的封裝能夠減少耦合。
2)類內部的結構可以自由修改。
3)可以對成員進行更精確的控制。
4)隱藏實現細節
物件大小計算:只計算非靜態成員變數(公有私有都算), 不算函式,和static變數,有記憶體對齊,空間換時間
2.四個預設成員函式,運算子過載
1)建構函式:初始化物件
無返回值
與類同名
例項化時自動呼叫
可過載
只要定義了建構函式,系統不會預設生成
無參建構函式,全預設建構函式,都叫預設建構函式
預設建構函式只能有一個,可以半預設
可在類外定義
2)拷貝建構函式:特殊的建構函式
拷貝構造是建構函式的過載
自己寫拷貝構造時候引數要傳引用,否則無窮遞迴
3)解構函式:清理工作
物件生命週期結束時自動呼叫
類名前面加~
不刪除物件,而是做一些清理工作,關閉檔案,釋放動態開闢等
4)賦值運算子的過載
兩個物件都存在時才會有賦值運算子過載
d1和d2兩個日期類都存在,d1=d2是賦值運算子過載
Date d2 = d1;這是拷貝構造,因為d2不是已經存在的
運算子過載
不能過載的5個運算子: .* :: sz ?: .
3.隱含的this指標
非靜態成員函式第一個引數都是this指標
public: void Display(Date *this)
cout<<this->_year;
main: Date d1; d1.Display(&d1);
4.運算子過載背後做的事情
兩個日期類 d1 == d2
編譯器會處理成 d1.operator==(&d1,d2);