本集的主要內容有:建構函式和析構函式
■c++在類說明中引進了建構函式
■建構函式在物件被建立時自動呼叫,為物件分配空間,物件所要執行的所有初始化工作都由建構函式自動完成。
■與建構函式相對對應的是析構函式。
■析構函式在乙個物件消失時被自動呼叫,完成物件使用結束時所要進行的清理工作,釋放被物件占用的資源。
1.規則
■建構函式的名字必須與其所屬的類名相同,並宣告為公有成員函式,並沒有任何型別的返回值。
■建構函式可以訪問類的所有資料成員,可以時內聯函式,可以帶有引數,還可以帶預設的形參值。
■建構函式也可以過載,以提供初始化類物件的不同方法
口訣:
建構函式與類同名,無返回值,必須在公有段;
可內聯,可過載,可帶預設形參值
用建構函式定義圓類
#include
using
namespace std;
const
double pi=
3.14
;class
circle
;circle::
circle()
//建構函式類外實現
double circle::
area()
intmain()
執行
2.過載建構函式
■過載函式示例
#include
using
namespace std;
class
sum;
sum::
sum(
)sum::
sum(
int a,
int b)
void sum::
prnt()
intmain()
執行
執行
3.析構函式
■規則:
1.析構函式與所屬的類同名,但其函式名前加乙個邏輯非運算子「~」,表示建構函式的逆。
2.析構函式沒有型別,沒有形參。
乙個類中只有可以乙個析構函式。
3.析構函式必須是公有的。
口訣:析構函式類名前加~,無返回值,必須在公有段;
不接受任何引數。
示例
#include
using
namespace std;
class
sum;
sum::
sum(
)sum::
~sum()
void sum::
prnt()
intmain()
■c++語言規定,規定,任何乙個類都必須有建構函式和析構函式。
■如果類中沒有顯示定義,則系統會提供一對預設的建構函式和析構函式。
考察建構函式與析構函式的呼叫順序
#include
using
namespace std;
class
tdate
;tdate::
tdate()
tdate::
tdate
(int d)
tdate::
tdate
(int m,
int d)
tdate::
tdate
(int m,
int d,
int y)
tdate::
~tdate()
intmain()
總結:建構函式按物件建立的順序被呼叫,析構函式順序與構造順序剛好相反。
4.拷貝建構函式
作用:用乙個存在的物件來初始化另乙個正建立的同類的物件,將乙個已知物件的資料成員的值拷貝給正在建立的另乙個同類的物件。
特點:■該函式只有乙個引數,並且是對某個物件的引用。
形式:類內原型宣告:
類名(類名 &物件名)
類外實現:
類名::類名(類名 &物件名)
示例
#include
using
namespace std;
class
tpoint
tpoint
(tpoint&p)
;//拷貝函式宣告
~tpoint()
intxcoord()
intycoord()
};tpoint::
tpoint
(tpoint &p)
intmain()
建構函式的特點:
■函式與類同名
■沒有返回值(void也沒有)
■必須在公有段(建立物件時由系統自動呼叫)
■可以過載
析構函式的特點:
■函式名為類名前加~
■沒有返回值(void也沒有)
■必須在公有段(撤銷物件時由系統自動呼叫)
■不接收任何引數(乙個類只能有乙個析構函式)
4點起步C (第四集)
1.輸出 good moring 和welcome to china include using namespace std intmain 執行 2.求出下列資料型別,表示式火變數在記憶體中佔的位元組的大小。1 int short,float,double,int double int 2 2.5...
4點起步C (第六集)
3.1 類 類是物件導向程式設計的基礎和核心,也是實現資料抽象的工具。類中的資料具有隱藏性和封裝性,類是實現c 許多高階特性的基礎。類定義的語法格式 class 類名 示例 class date 類宣告,類名date void set int y,int m,int d 3.2 類的成員函式1.在類...
4點起步C (第九集)
1.定義乙個電視機類 tv 包含的私有資料成員有 類別 type 電壓 voltage 尺寸 size 兩個公有成員函式stat和stop分別用於啟動電視和關閉電視。在類內定義類的建構函式和析構函式,其中建構函式是帶預設值引數的函式,來初始化資料成員。在類外定義多個函式用來設定和獲取類的私有資料成員...