構(gòu)造函數(shù)是類中特殊的成員函數(shù)。
在和平等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站設(shè)計、成都網(wǎng)站制作 網(wǎng)站設(shè)計制作按需定制,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),成都品牌網(wǎng)站建設(shè),成都營銷網(wǎng)站建設(shè),成都外貿(mào)網(wǎng)站制作,和平網(wǎng)站建設(shè)費用合理。創(chuàng)建類類型的新對象的,系統(tǒng)會自動調(diào)用構(gòu)造函數(shù)。
構(gòu)造函數(shù)的調(diào)用是為了保證每個數(shù)據(jù)成員都能被正確初始化。
構(gòu)造函數(shù)的作用初始化。
通常情況下,構(gòu)造函數(shù)應(yīng)聲明為公有函數(shù),構(gòu)造它不能像其他成員函數(shù)那樣被顯式的調(diào)用。
構(gòu)造函數(shù)被聲明為私有有特殊的用途。
構(gòu)造函數(shù)可以有任意類型和任意個數(shù)的參數(shù),一個類可以有多個構(gòu)造函數(shù)。
如果程序未聲明構(gòu)造函數(shù),默認(rèn)會生成一個空的構(gòu)造函數(shù)。
不帶參數(shù)的構(gòu)造函數(shù)稱為默認(rèn)構(gòu)造函數(shù)。
如果有一個構(gòu)造函數(shù),系統(tǒng)不再生成默認(rèn)構(gòu)造函數(shù)
Test.h
- //Test.h
- # ifndef _TEST_H_
- # define _TEST_H_
- class
- public如果程序未聲明構(gòu)造函數(shù),默認(rèn)會生成一個空的構(gòu)造函數(shù)
- private
- int
- # endif //_TEST_H_
Test.cpp
- //Test.cpp
- # include "Test.h"
- # include
- usingnamespace
- "Initializing Default "
main.cpp
- # include
- # include "Test.h"
- usingnamespace
- intvoid
- return
運行結(jié)果:
// 如果有一個構(gòu)造函數(shù),系統(tǒng)不再生成默認(rèn)構(gòu)造函數(shù)
Test.h
- //Test.h
- # ifndef _TEST_H_
- # define _TEST_H_
- class Test
- {
- public: //如果程序未聲明構(gòu)造函數(shù),默認(rèn)會生成一個空的構(gòu)造函數(shù)
- Test(int num);
- private:
- int num_;
- };
- # endif //_TEST_H_
Test.cpp
- //Test.cpp
- # include "Test.h"
- # include
- using namespace std;
- Test::Test(int num)
- {
- num_ = num;
- cout << "Initializing " << num_ << endl;
- }
main.cpp
- # include
- # include "Test.h"
- using namespace std;
- int main(void)
- { //自動調(diào)用構(gòu)造函數(shù)
- Test t(10);
- return 0;
- }
運行結(jié)果:
構(gòu)造函數(shù)重載的實例:
Test.h
- //Test.h
- # ifndef _TEST_H_
- # define _TEST_H_
- class Test
- {
- public: //如果程序未聲明構(gòu)造函數(shù),默認(rèn)會生成一個空的構(gòu)造函數(shù)
- Test();
- Test(int num);
- private:
- int num_;
- };
- # endif //_TEST_H_
Test.cpp
- //Test.cpp
- # include "Test.h"
- # include
- using namespace std;
- Test::Test()
- {
- num_ = 0;
- cout << "Initializing default " << endl;
- }
- Test::Test(int num)
- {
- num_ = num;
- cout << "Initializing " << num_ << endl;
- }
main.cpp
- # include
- # include "Test.h"
- using namespace std;
- int main(void)
- { //自動調(diào)用構(gòu)造函數(shù)
- Test t1;
- Test t2(10);
- return 0;
- }
運行結(jié)果:
構(gòu)造函數(shù)與new運算符
- //構(gòu)造函數(shù)與new運算符
- # ifndef _TEST_H_
- # define _TEST_H_
- class
- public
- ////可以顯式的寫一個默認(rèn)構(gòu)造函數(shù),這樣兩個函數(shù)就成了重載
- int
- //析構(gòu)函數(shù)不能重載
- //析構(gòu)函數(shù)不能帶參數(shù),如果帶參數(shù)就可以重載
- void
- private
- int
- # endif
Test.cpp
- # include "Test.h"
- # include
- usingnamespace
- void
- "Initializing Default"
- int
- "Initializing "
- "Destory "
main.cpp
- # include
- # include "Test.h"
- usingnamespace
- intvoid
- //不僅僅分配了內(nèi)存,還調(diào)用了構(gòu)造函數(shù)
- new//new operator
- //不僅僅釋放了內(nèi)存,也調(diào)用了析構(gòu)函數(shù)
- delete
- return
運行結(jié)果:
//全局對象的構(gòu)造先于main函數(shù)
- # ifndef _TEST_H_
- # define _TEST_H_
- class Test
- {
- public:
- ////可以顯式的寫一個默認(rèn)構(gòu)造函數(shù),這樣兩個函數(shù)就成了重載
- Test();
- Test(int num);
- //析構(gòu)函數(shù)不能重載
- //析構(gòu)函數(shù)不能帶參數(shù),如果帶參數(shù)就可以重載
- ~Test();
- void Display();
- private:
- int num_;
- };
- # endif
Test.cpp
- # include "Test.h"
- # include
- using namespace std;
- void Test::Display()
- {
- cout << num_ << endl;
- }
- Test::Test()
- {
- num_ = 0;
- cout<<"Initializing Default" << endl;
- }
- Test::Test(int num)
- {
- num_ = num;
- cout<<"Initializing "<
- }
- Test::~Test()
- {
- cout << "Destory " << num_ << endl;
- }
main.cpp
- # include "Test.h"
- usingnamespace
- //全局對象的構(gòu)造先于main函數(shù)
- intvoid
- "Entering main ..."
- "Exiting main ..."
- return
運行結(jié)果:
默認(rèn)析構(gòu)函數(shù)是一個空函數(shù)
析構(gòu)函數(shù)沒有參數(shù)
析構(gòu)函數(shù)不能被重載
析構(gòu)函數(shù)與數(shù)組
Test.h
- //Test.h
- # ifndef _TEST_H_
- # define _TEST_H_
- class
- public
- ////可以顯式的寫一個默認(rèn)構(gòu)造函數(shù),這樣兩個函數(shù)就成了重載
- int
- //析構(gòu)函數(shù)不能重載
- //析構(gòu)函數(shù)不能帶參數(shù),如果帶參數(shù)就可以重載
- void
- private
- int
- # endif //_TEST_H_
Test.cpp
- //Test.cpp
- # include
- # include "Test.h"
- usingnamespace
- void
- "Initializing Deafule "
- int
- "Initializing "
- "Destory "
main.cpp
- //main.cpp
- # include
- # include "Test.h"
- usingnamespace
- intvoid
- //定義對象數(shù)組
- //動態(tài)對象
- new//傳遞參數(shù)2
- delete
- //沒有傳遞任何參數(shù),創(chuàng)建了兩個對象
- new
- delete
- return
運行結(jié)果:
析構(gòu)函數(shù)不能重載
析構(gòu)函數(shù)不能帶參數(shù),如果帶參數(shù)就可以重載
析構(gòu)函數(shù)可以顯式調(diào)用,一般很少用到,會實現(xiàn)一些特殊的效果:
- //main.cpp
- # include "Test.h"
- intvoid
- //析構(gòu)函數(shù)被調(diào)用了兩次
- //析構(gòu)函數(shù)很少調(diào)用,可以顯式調(diào)用
- return
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。