建構函式特點:
注意:如果不標明public裡面的,程式預設為私有成員變數;
預設建構函式分兩種:1.建構函式不帶引數;2.建構函式帶引數但引數都有預設值;
eg:
預設建構函式是指在宣告物件時可以不傳遞引數,使用空值或預設值對物件進行初始化,而普通建構函式在宣告物件時必須傳遞引數,否則普通建構函式的引數 (形參)沒有值,編譯出錯;circle()
;//預設建構函式
circle
(float a=0,
float b=0,
float c=0)
;//預設建構函式帶引數有預設值
circle
(float a,float b,floay c)
;//普通的建構函式
注意:如果程式中無建構函式,那麼編譯器會提供乙個空的預設建構函式,它不會對資料成員初始化;
在使用c++程式設計過程中,在建構函式進行類的初始化有兩種方式:
1.
ting
(int a,
int b,
int c)
對類的成員函式進行初始化:1》效率更高,對類的成員函式來說;2》有些型別的成員變數必須使用初始化列表的形式初始化,如const成員、引用成員;3》在繼承時,子類的建構函式初始化父類的成員時;ting
(int a,
int b,
int c):x
(a),
y(b),z
(c)
在同一作用域中,可以有一組相同的函式名,不同引數列表的函式,這個函式被稱為函式過載;不同的引數列表是指引數不同或引數的型別不同。eg:
注意:如果只是函式的返回值型別不同,不能被稱為函式過載void
fun();
void
fun(
int x)
;void
fun(
int x,
float y)
;
eg:
注意:void
fun();
intfun()
;
1.類中也能定義多個建構函式,但是必須勾成過載函式的條件;
2.宣告物件的引數型別和個數要與建構函式的引數相匹配;
復合類也被稱為組合類,是指將乙個類的物件作為另乙個類的成員變數;
eg:
#include
using
namespace std;
class
point
;point::
point()
point::
point
(float _x,
float _y)
void point::
print()
class
circle
//復合類:乙個類中包含另乙個類的成員變數
;circle::
circle()
circle::
circle
(float x,
float y,
float r)
:center
(x,y)
,radius
(r)void circle::
setcircle
(float r,point p)
//修改半徑和圓心點
void circle::
print()
intmain()
建立物件時,系統會自動呼叫建構函式進行初始化工作,同樣,在銷毀物件時也會自動呼叫乙個函式進行清洗工作(**物件占用的記憶體空間);這個函式就是性析構函式虛構函式是一種特殊的成員函式,沒有返回值,不用進行使用者呼叫,而是在銷毀物件的過程中自動呼叫;與建構函式不同的是eg:~circle()
特點:1》無返回值 2》不能有引數 3》不能被過載 4》必須共有
eg:
如果類中有指標成員變數,並且指標指向堆記憶體,必須顯式的宣告析構函式,釋放指標指向的堆記憶體,否則會造成記憶體洩漏;class
test}~
test()
void
print()
;private
:int
*p;}
;void test::
print()
cout<}int
main()
類建構函式 析構函式
下面的例項有助於更好地理解建構函式的概念 include using namespace std class line 成員函式定義,包括建構函式 line line void void line setlength double len double line getlength void 程式的...
類建構函式,類析構函式
類建構函式 the class constructor 是乙個特殊的類成員函式,當我們建立這個類的新物件時,會被執行。乙個建構函式將被確定與類名相同的名字,沒有任何返回值,包括void。建構函式對於給某些類成員變數設定初始值非常有用。例子 include using namespace std cl...
C 類建構函式 析構函式
類的建構函式是類的一種特殊的成員函式,它會在每次建立類的新物件時執行。建構函式的名稱與類的名稱是完全相同的,並且不會返回任何型別,也不會返回 void。建構函式可用於為某些成員變數設定初始值。下面的例項有助於更好地理解建構函式的概念 include using namespace std class...