1、什麼是物件導向?
物件導向程式設計2、類的大小?為什麼要記憶體對齊?記憶體對齊的計算?空類的計算概念:(object oriented programming,縮寫:oop)是一種程式設計范型,同時也是一種程式開發的方法。 物件指的是類的例項,將物件作為程式的基本單元,將程式和資料封裝其中,以提高軟體的重用性、靈活性和擴充套件性。
c++不是純物件導向語言,而是基於物件導向的語言 (ps:因為它包含c的部分,c是面向過程)
物件導向的三大特性: 封裝、繼承、多型
1) 每個物件的大小為類中所有成員變數的大小之和,當然這裡也遵循記憶體對齊原則。記憶體對齊原則請檢視:
2)記憶體對齊是為了提高程式執行速度(浪費空間換時間)
3)空類的大小為13、隱含的this指標4、四個預設成員函式詳解
1、建構函式:
成員變數為私有的,要對它們進行初始化,必須用乙個公有成員函式來進行。同時這個函式應該有且僅在頂yi時自動執行一次。特點:
1)函式名與類名相同;
2)無返回值;
3)物件構造時系統自動呼叫對應的建構函式
4)可以過載
5)可在類內定義,也可在類外定義
6)若在類中沒有定義建構函式,則c++編譯器自動產生乙個預設的建構函式,定義了系統就不會自動產生。
7)無參的建構函式和全預設值的建構函式都認為是預設建構函式,並且預設的建構函式只能有乙個。
2、拷貝建構函式無參建構函式&帶參的建構函式
class
date
// 2.帶參建構函式
date (int year, int month , int day )
private :
int _year ;
int _month ;
int _day ;
};void testdate1 ()
帶預設引數的建構函式
class
date
建立物件時使用同類來進行初始化,這時所用的建構函式稱為拷貝建構函式,拷貝建構函式是特殊的建構函式。
特徵:
1)拷貝建構函式其實是乙個建構函式的過載。
2)拷貝建構函式的引數必須使用引用傳參,使用傳值方式會引發無窮遞迴引用。
3)若未寫,系統會預設預設的拷貝建構函式,依次拷貝類成員進行初始化。
3、析構函式:class date
// 拷貝建構函式
date (const date& d)
private :
int _year ;
int _month ;
int _day ;
};void testdate1 ()
當乙個物件的生命週期結束時,c++編譯系統會自動呼叫乙個成員函式,這個特殊的成員函式即析構函式
特徵:
1、析構函式在類名加上字元~;
2、析構函式無引數無返回值。
3、乙個類有且只有乙個析構函式,若未顯示,系統會自動生成預設的析構函式
4、物件生命週期結束時,c++編譯系統自動呼叫析構函式
5、注意析構函式體內並不是刪除物件,而是做一些清理工作
先構造後析構,後析構先構造
4、運算子過載:class date
private :
int _year ;
int _month ;
int _day ;
};exp0
class array
// 這裡的析構函式需要完成清(shi)理(fang)工(kong)作(jian)。
~ array ()
} private :
int* _ptr ;
};
為了增強程式的可讀性,c++支援運算子過載。
運算子過載特徵:
1. operator+ 合法的運算子 構成函式名(過載《運算子的函式名:operator< )。
2. 過載運算子以後,不能改變運算子的優先順序/結合性/運算元個數。
筆試題考點 5個c++不能過載的運算子:
.*/::/sizeof/?:/.
【賦值運算子過載】
拷貝建構函式是建立的物件,使用乙個已有物件來初始化這個準備建立的物件。 賦值運算子的過載是對乙個已存在的物件進行拷貝賦值。
class
date
// 拷貝建構函式
date (const
date& d)
_year(d._year)
_month(d._month)
_day(d._day)
{} // 賦值操作符的過載
// 1.思考為什麼operator=賦值函式需要乙個 date&的返回值,使用void做返回值可以嗎?請驗證
c 類和物件 四個預設成員函式 運算子過載
類的宣告和定義 c 中類的定義一般分為類的宣告部分和類的實現部分。類的宣告部分用來說明該類中的成員 資料成員,成員函式 告訴使用者 幹什麼 類的實現部分用來定義成員函式,該函式用來對資料成員進行操作,告訴使用者 怎麼做 類定義的形式 class 類名 類的宣告部分 各成員函式的實現 類的實現部分 實...
類和物件 四個預設成員函式 運算子過載
類的定義 類 class 實際上是某種型別的物件變數和方法的原型.類是從一些具有相同屬性或功能的具體例項中抽象出共有的一些屬性。類是乙個新的資料型別,它和結構體有點相似,是由不同資料型別組成的集合體,但類要比結構體增加了運算元據的行為,這個行為就是函式,還有乙個區別就是類內存在類成員訪問的修飾限定符...
C 類和物件1 四個預設成員函式 運算子過載
1 整理類和物件的基礎知識,如類的定義,訪問限定符,物件導向封裝性,物件的大小計算等等。2 整理四個預設成員函式及運算子過載相關知識 3 整理隱含的this指標等等,及對運算子過載背後做的事情。c 不是純物件導向語言,而是基於物件導向的語言 三種訪問限定符 public成員可以從類外部直接訪問,pr...