建構函式特點:
注意:如果不標明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)
ting
(int a,
int b,
int c):x
(a),
y(b),z
(c)
對類的成員函式進行初始化:1》效率更高,對類的成員函式來說;2》有些型別的成員變數必須使用初始化列表的形式初始化,如const成員、引用成員;3》在繼承時,子類的建構函式初始化父類的成員時;
在同一作用域中,可以有一組相同的函式名,不同引數列表的函式,這個函式被稱為函式過載;不同的引數列表是指引數不同或引數的型別不同。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...