建構函式是類中特殊的成員函式。
建立類型別的新物件的,系統會自動呼叫建構函式。
建構函式的呼叫是為了保證每個資料成員都能被正確初始化。
建構函式的作用初始化。
通常情況下,建構函式應宣告為公有函式,構造它不能像其他成員函式那樣被顯式的呼叫。
建構函式被宣告為私有有特殊的用途。
建構函式可以有任意型別和任意個數的引數,乙個類可以有多個建構函式。
如果程式未宣告建構函式,缺省會生成乙個空的建構函式。
不帶引數的建構函式稱為預設建構函式。
如果有乙個建構函式,系統不再生成預設建構函式
test.h
# ifndef _test_h_# define _test_h_
class test
; # endif //_test_h_
test.cpp
# include "test.h"# include
using
namespace std;
test::test()
main.cpp
# include# include "test.h"
using
namespace std;
int main(void)
執行結果:
// 如果有乙個建構函式,系統不再生成預設建構函式
test.h
# ifndef _test_h_# define _test_h_
class test
; # endif //_test_h_
test.cpp
# include "test.h"# include
using
namespace std;
test::test(int num)
main.cpp
# include# include "test.h"
using
namespace std;
int main(void)
執行結果:
建構函式過載的例項:
test.h
# ifndef _test_h_# define _test_h_
class test
; # endif //_test_h_
test.cpp
# include "test.h"# include
using
namespace std;
test::test()
test::test(int num)
main.cpp
# include# include "test.h"
using
namespace std;
int main(void)
執行結果:
建構函式與new運算子
//建構函式與new運算子# ifndef _test_h_
# define _test_h_
class test
; # endif
test.cpp
# include "test.h"# include
using
namespace std;
void test::display()
test::test()
test::test(int num)
test::~test()
main.cpp
# include# include "test.h"
using
namespace std;
int main(void)
執行結果:
//全域性物件的構造先於main函式
# ifndef _test_h_# define _test_h_
class test
; # endif
test.cpp
# include "test.h"# include
using
namespace std;
void test::display()
test::test()
test::test(int num)
test::~test()
main.cpp
# include "test.h"using
namespace std;
//全域性物件的構造先於main函式
test t(10);
int main(void)
執行結果:
預設析構函式是乙個空函式
析構函式沒有引數
析構函式不能被過載
析構函式與陣列
test.h
# ifndef _test_h_# define _test_h_
class test
; # endif //_test_h_
test.cpp
# include# include "test.h"
using
namespace std;
void test::display()
test::test()
test::test(int num)
test::~test()
main.cpp
# include# include "test.h"
using
namespace std;
int main(void)
; //動態物件
test* t2 = new test(2); //傳遞引數2
delete t2;
//沒有傳遞任何引數,建立了兩個物件
test* t3 = new test[2];
delete t3;
return 0; }
執行結果:
析構函式不能過載
析構函式不能帶引數,如果帶引數就可以過載
析構函式可以顯式呼叫,一般很少用到,會實現一些特殊的效果:
# include "test.h"int main(void)
C 學習 建構函式和析構函式
當建立物件的時候,這個物件應該有乙個初始狀態 當物件銷毀之前應該銷毀自己建立的一些資料。c 中的解決方案,建構函式和析構函式,這兩個函式將會被編譯器自動呼叫,完成物件初始化和物件清理工作 不管有沒有我們有沒有提供初始化操作和清理操作,編譯器也會增加預設的操作,只是這個預設初始化操作不會做任何事,所以...
C 建構函式和析構函式一
c 利用了建構函式和析構函式解決上述問題,這兩個函式將會被編譯器自動呼叫,完成物件初始化和清理工作。物件的初始化和清理工作是編譯器強制要我們做的事情,因此如果我們不提供構造和析構,編譯器會提供 編譯器提供的建構函式和析構函式是空實現。建構函式語法 類名 建構函式,沒有返回值也不寫void 函式名稱與...
C 建構函式和析構函式
1.建構函式是類的一種特殊方法,每次建立類的例項都會呼叫它。在建立乙個類的例項時,建構函式就像乙個方法一樣被呼叫,但不返回值。語法格式 訪問修飾符 類名 特性 1 其名字必須與類名相同,例如 public class myclass 2 不能被直接呼叫,必須通過new運算子來 呼叫。publiccl...