




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第C++詳細講解對象的構(gòu)造順序目錄一、局部對象的構(gòu)造順序二、堆對象的構(gòu)造順序三、全局對象的構(gòu)造順序命令行四、小結(jié)
一、局部對象的構(gòu)造順序
對于局部對象
當程序執(zhí)行流到達對象的定義語句時進行構(gòu)造
下面看一個局部對象的構(gòu)造示例:
#includestdio.h
classTest
private:
intmi;
public:
Test(inti)
mi=i;
printf("Test(inti):%d\n",mi);
Test(constTestobj)
mi=obj.mi;
printf("Test(constTestobj):%d\n",mi);
intmain()
inti=0;
Testa1=i;
while(i3)
Testa2=++i;
if(i4)
Testa=a1;
else
Testa(100);
return0;
}
輸出結(jié)果如下:
如果對象沒有被初始化會發(fā)生什么,下面看一個示例:
#includestdio.h
classTest
private:
intmi;
public:
Test(inti)
mi=i;
printf("Test(inti):%d\n",mi);
Test(constTestobj)
mi=obj.mi;
printf("Test(constTestobj):%d\n",mi);
intgetMi()
returnmi;
intmain()
inti=0;
Testa1=i;
while(i3)
Testa2=++i;
gotoEnd;
Testa(100);
printf("a.mi=%d\n",g.getMi());
return0;
}
在g++編譯器下,就會報錯,讓不要使用goto語句,會跳過初始化
二、堆對象的構(gòu)造順序
對于堆對象
當程序執(zhí)行流到達new語句時創(chuàng)建對象使用new創(chuàng)建對象將自動觸發(fā)構(gòu)造函數(shù)的調(diào)用
下面看一個堆空間的構(gòu)造順序示例:
#includestdio.h
classTest
private:
intmi;
public:
Test(inti)
mi=i;
printf("Test(inti):%d\n",mi);
Test(constTestobj)
mi=obj.mi;
printf("Test(constTestobj):%d\n",mi);
intgetMi()
returnmi;
intmain()
inti=0;
Test*a1=newTest(i);//Test(inti):0
while(++i10)
if(i%2)
newTest(i);//Test(inti):1,3,5,7,9
if(i4)
newTest(*a1);
else
newTest(100);//Test(inti):100
return0;
}
輸出結(jié)果如下:
三、全局對象的構(gòu)造順序
對于全局對象
對象的構(gòu)造順序是不確定的不同的編譯器使用不同的規(guī)則確定構(gòu)造順序
下面看一個全局對象的構(gòu)造順序示例:
test.h:
#ifndef_TEST_H_
#define_TEST_H_
#includestdio.h
classTest
public:
Test(constchar*s)
printf("%s\n",s);
#endif
test.cpp:
#include"test.h"
Testt4("t4");
intmain()
Testt5("t5");
}
t1.cpp:
#include"test.h"
Testt1("t1");
t2.cpp:
#include"test.h"
Testt2("t2");
t3.cpp:
#include"test.h"
Testt3("t3");
在gcc編譯器中,輸出結(jié)果如下:
下面看一下使用VS2012編譯這些代碼:
(不知道VS2012怎么使用命令行窗口編譯程序的可以看《命令行》不需要可以跳過)
這足以說明全局變量的構(gòu)造順序是不確定的。
命令行
以下面的代碼為例
test.h:
#ifndef_TEST_H_
#define_TEST_H_
#includestdio.h
classTest
public:
Test(constchar*s)
printf("%s\n",s);
#endif
test.cpp:
#include"test.h"
Testt4("t4");
intmain()
Testt5("t5");
}
t1.cpp:
#include"test.h"
Testt1("t1");
t2.cpp:
#include"test.h"
Testt2("t2");
t3.cpp:
#include"test.h"
Testt3("t3");
第一步,打開VS2012,選擇工具-VisualStudio命令提示
第二步,實用cd/d進入需要編譯的文件夾。(注意換盤符需要輸入/d)
我想要編譯的文件在C:\Users\HuZeQiu\Desktop\demo文件夾里。
輸入cd/dC:\Users\HuZeQiu\Desktop\demo,按下回車鍵,如下,就轉(zhuǎn)到了目的文件夾
第三步,輸入cltest.cppt2.cppt1.cppt3.cpp-otest.exe編譯程序。(cl命令是用來編譯程序)按下回車鍵后開始編譯,生成test.exe可執(zhí)行文件,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2026學(xué)年福建省泉州市臺商投資區(qū)數(shù)學(xué)三年級第一學(xué)期期末教學(xué)質(zhì)量檢測試題含解析
- 公共衛(wèi)生服務(wù)信息系統(tǒng)培訓(xùn)課件
- 應(yīng)對變化的行政法學(xué)試題及答案
- 復(fù)雜病癥護理方案試題及答案概述
- 2025年衛(wèi)生資格高頻考點試題及答案
- 成功備戰(zhàn)2025年執(zhí)業(yè)醫(yī)師考試的多種路徑試題及答案
- 主管護師考試應(yīng)試心理試題及答案
- 2025年執(zhí)業(yè)醫(yī)師考試經(jīng)驗教訓(xùn)總結(jié)與試題及答案
- 護理政策與社會影響探討與試題及答案
- 藥物使用的有效溝通策略試題及答案
- 2025年汽車轉(zhuǎn)向橋總成行業(yè)深度研究分析報告
- 《招生話術(shù)技巧》課件
- 永久性租房合同(2篇)
- 外賣員交通安全課件
- 車輛火災(zāi)應(yīng)急處理方法
- 《微格教學(xué)》課件
- 2025年安徽合肥東部新中心建設(shè)投資限公司招聘8人高頻重點提升(共500題)附帶答案詳解
- 水循環(huán)課件完整版本
- 2024年小學(xué)生航空航天知識競賽題庫附答案 (共150題)
- 大學(xué)物理波動光學(xué)復(fù)習(xí)課件講義
- 教育系統(tǒng)后備干部考試題庫及答案
評論
0/150
提交評論