




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
構(gòu)
造
函
數(shù)第
和
析
構(gòu)
函
數(shù)Q章
1
JIANSHUUNIVERSITYofSCIENCEandTECHNOLOGY
翁羸需象的方法
VC++中初始化對(duì)象有三種方法:
(1)用初始化列表。這種方法只適用于成員全為公有
的,當(dāng)成員有私有或派生時(shí)不可使用。如:
classPoint{
public:
intx,y;
intGetX(){returnx;}
intGetY(){returny;}
voidSetXY(int,int);
voidprintXY(){cout?x?J\f;cout?y?,\n,;}
}P={3,9},Q;
2012-10-232
JIANSHUUNIVERSITYofSCIENCEandTECHNOLOGY
山數(shù)為X」次初始化。如:
#include<iostream.h>
classA{
private:
inti;
public:
voidinit(inta){i=a;}
voidPrint(){cout?i?endl;}
};
voidmain(){
Aobj;
obj.init(12);obj.Print();
)
這種方法主要有兩個(gè)缺點(diǎn),即增加了程序的復(fù)雜程度,
并且容易遺漏初始化操作,被遺漏的對(duì)象將毫無(wú)意義。
2012-10-233
1IANSHUUNIVERSITYofSCIENCEandTECHNOLOGY
(3)用構(gòu)造函數(shù)初始化。
(4)用完成拷貝功能的構(gòu)造函數(shù)初始化。
2012-10-234
JIANSHUUNIVERSITYofSCIENCEandTECHNOLOGY
1、構(gòu)造函數(shù)的定義
構(gòu)造函數(shù)是一種特殊的初始化類(lèi)的成員函數(shù)。
當(dāng)對(duì)象被創(chuàng)建時(shí),構(gòu)造函數(shù)自動(dòng)被調(diào)用。
使用構(gòu)造函數(shù)可方便編程,簡(jiǎn)化程序代碼O
構(gòu)造函數(shù)定義的一般格式如下:
類(lèi)名::類(lèi)名(形參表){
函數(shù)體
}
構(gòu)造函數(shù)的特點(diǎn):函數(shù)的名字與類(lèi)名相同,
,沒(méi)有返回類(lèi)型和返回值。5
1IANSHUUNIVERSITYofSCIENCEandTECHNOLOGY
任務(wù):定義類(lèi)Point的構(gòu)造函數(shù)。
classPoint{
intx,y;
public:
Point(inta,intb){x=a;y=b;}〃構(gòu)造函數(shù)
intGetX(){returnx;}
intGetY(){returny;}
voidSetXY(inta,intb){x=a;y=b;}
voidprintXY()
{coutvvxvv'\t';coutvvyvv'\rT;}
);
2012-10-236
1IANSHUUNIVERSITYofSCIENCEandTECHNOLOGY
我們也可以在類(lèi)外定義構(gòu)造函數(shù):
Point::Point(inta,intb)
x=a;
y=b;
)
2012-10-237
JIANSHUUNIVERSITYofSCIENCEandTECHNOLOGY
2、缺省的構(gòu)造函數(shù)
每個(gè)類(lèi)均有構(gòu)造函數(shù),如果不定義構(gòu)造函數(shù),編譯器
會(huì)自動(dòng)產(chǎn)生一個(gè)公共的默認(rèn)構(gòu)造函數(shù),這個(gè)構(gòu)造函
數(shù)什么都不做。如果至少提供一個(gè)構(gòu)造函數(shù),則編
譯器就不會(huì)產(chǎn)生默認(rèn)構(gòu)造函數(shù)。
缺省構(gòu)造函數(shù)的形式為:
類(lèi)名::類(lèi)名(){}
若顯式定義了構(gòu)造函數(shù),則缺省的構(gòu)造函數(shù)自動(dòng)消失。
構(gòu)造函數(shù)可以缺省參數(shù),默認(rèn)構(gòu)造函數(shù)與缺省參數(shù)的
構(gòu)造函數(shù)統(tǒng)稱(chēng)為缺省的構(gòu)造函數(shù)。
2012-10-23
JIANSHUUNIVERSITYofSCIENCEandTECHNOLOGY
3、構(gòu)造函數(shù)的使用
?構(gòu)造函數(shù)不需要人為調(diào)用,定義對(duì)象時(shí)系統(tǒng)
自動(dòng)調(diào)用并初始化對(duì)象。定義對(duì)象的一般格
式為:
類(lèi)名對(duì)象名(實(shí)參表);
如:PointS(2,3);定義了Point的一個(gè)對(duì)象S,并
自動(dòng)調(diào)用構(gòu)造函數(shù)為其賦初值。
2012-10-239
JIANSHUUNIVERSITYofSCIENCEandTECHNOLOGY
任務(wù)與算法分析:
(1)定義含構(gòu)造函數(shù)的類(lèi)Point;
(2)在主函數(shù)中定義對(duì)象,調(diào)用對(duì)象的成員函數(shù)。
#include<iostream.h>
classPoint{
intx,y;
public:
Point(inta=0,intb=0){x=a;y=b;}〃構(gòu)造函數(shù)
intGetX(){returnx;}
intGetY(){returny;}
voidSetXY(int,int);
voidprintXY(){cout?x?5\t5;cout?y?5\n,;}
);
2012-10-2310
JIANSHUUNIVERSITYofSCIENCEandTECHNOLOGY
voidPoint::SetXY(intajntb){
x=a;y=b;
)
voidmain(){
Pointp1(1,2);
IIp1對(duì)象的x和y的初值分別為1和2
Pointp2;
〃p2對(duì)象的x和y的初值均為0
cout?p1.GetX()?5\t5?p1.GetY()?,\n,;
p2.printXY();
)輸出:12
00
2012-10-2311
JIANSHUUNIVERSITYofSCIENCEandTECHNOLOGY
4、構(gòu)造函數(shù)的重載
一個(gè)類(lèi)中可以有多個(gè)構(gòu)造函數(shù)。這些構(gòu)造函
數(shù)必須具有不同的參數(shù)表。在一個(gè)類(lèi)中需要
接受不同初始化值時(shí),就需要編寫(xiě)多個(gè)構(gòu)造
函數(shù),即實(shí)現(xiàn)重載。創(chuàng)建Point對(duì)象時(shí),自動(dòng)
調(diào)用相應(yīng)的構(gòu)造函數(shù)。
2012-10-2312
JIANSHUUNIVERSITYofSCIENCEandTECHNOLOGY
造函數(shù)重載舉例。
任務(wù):
(1)定義類(lèi)Point;
(2)在類(lèi)Point中定義重載的構(gòu)造函數(shù)。
#include<iostream.h>
classPoint{
intx,y;
public:
Point(inta,intb){x=a;y=b;}
Point(float,float);//極坐標(biāo)
Point(void){x=y=0;}
voidprintXY(){cout?x?,\f;cout?y?,\n,;}
^12-10-23
13
1IANSHUUNIVERSITYofSCIENCEandTECHNOLOGY
Point::Point(floatlen,floatangle){〃極坐標(biāo)
x=(int)(len*cos(angle));
y=(int)(len*sin(angle));
)
voidmain(){
PointP(10,20);〃笛卡兒坐標(biāo)
PointQ(2.0f,3.14f);II極坐標(biāo)
PointR;//A
P.printXY();
Q.printXY();
R.printXY();
)
2012-10-2314
JIANSHUUNIVERSITYofSCIENCEandTECHNOLOGY
1史用懼迎數(shù)的幾點(diǎn)說(shuō)明:
(1)每個(gè)對(duì)象必須有一個(gè)構(gòu)造函數(shù)與其對(duì)應(yīng)。如:
classPoint{
intx,y;
public:
Point(inta,intb){x=a;y=b;}
);
voidmain(){
Pointp1(12);〃錯(cuò)誤
)
2012-10-2315
1IANSHUUNIVERSITYofSCIENCEandTECHNOLOGY
曷須有唯一一個(gè)構(gòu)造函數(shù)與其對(duì)應(yīng)。如:
classPoint{
intx,y;
public:
Point(inta,intb=O){x=a;y=b;}
Point(inta){x=a;y=10;}
);
voidmain(){
Pointp1(12);〃錯(cuò)誤
)
2012-10-2316
1IANSHUUNIVERSITYofSCIENCEandTECHNOLOGY
(3)當(dāng)對(duì)象調(diào)用缺省參數(shù)的構(gòu)造函數(shù)時(shí),對(duì)象后的
括號(hào)不能有,否則作為函數(shù)聲明。如:
classPoint{
intx,y;
public:
Point(inta=0,intb=O){x=a;y=b;}
);
voidmain(){
Pointp1();〃錯(cuò)誤
)
2012-10-2317
JIANSHUUNIVERSITYofSCIENCEandTECHNOLOGY
5、new運(yùn)算符與構(gòu)造函數(shù)
用new運(yùn)算符可動(dòng)態(tài)創(chuàng)建對(duì)象,此時(shí)自動(dòng)調(diào)
用構(gòu)造函數(shù)來(lái)完成對(duì)象的初始化。如:
Point*p=newPoint(3,9);
當(dāng)類(lèi)中有指針型成員時(shí),需顯式定義構(gòu)造函
數(shù),并且在構(gòu)造函數(shù)中先用new動(dòng)態(tài)分配空
間。如:
2012-10-2318
1IANSHUUNIVERSITYofSCIENCEandTECHNOLOGY
#include<iostream.h>
#include<string.h>
classString{
char*str;
public:
String(char*p){
if(P){
str=(char*)newchar[strlen(p)+1];
strcpy(str,p);
)
elsestr=O;
)
voidprint(){cout?str?,\n,;}
2012-1()319
JIANSHUUNIVERSITYofSCIENCEandTECHNOLOGY
當(dāng)用new運(yùn)算符動(dòng)態(tài)創(chuàng)建對(duì)象數(shù)組時(shí),自動(dòng)多次調(diào)用
構(gòu)造函數(shù)。如:
Point*elems=newPoint[10];
此時(shí)依次調(diào)用構(gòu)造函數(shù),順序生成對(duì)象elems[0]、
elems[1]>.......elems[9]o
new的調(diào)用格式是類(lèi)型后面跟[元素個(gè)數(shù)],不能再跟
構(gòu)造函數(shù)的參數(shù),故數(shù)組元素的初始化只能調(diào)用無(wú)
參的構(gòu)造函數(shù),否則會(huì)出現(xiàn)編譯錯(cuò)誤。如定義:
PointP[4];
則在創(chuàng)建時(shí),數(shù)組的每一個(gè)對(duì)象都調(diào)用缺省構(gòu)造函
數(shù)進(jìn)行初始化。若Point類(lèi)只有帶參構(gòu)造函數(shù),則
必須使用初始化表。
2012-10-2320
1IANSHUUNIVERSITYofSCIENCEandTECHNOLOGY
classPoint{
public:
intx,y;
Point(inta,intb){x=a;y=b;}
);
voidmain(){
PointP[4]={Point(1,3),Point(3,6),Point(9,2),
Point(5,3)};
)
2012-10-2321
1IANSHUUNIVERSITYofSCIENCEandTECHNOLOGY
7、對(duì)象成員與構(gòu)造函數(shù)
若一個(gè)類(lèi)的成員定義為另一個(gè)類(lèi)的對(duì)象,如:
classAA{
intx,y;
};
classBB{
AAa1,a2;
floatz;
2012-10-2:22
JIANSHUUNIVERSITYofSCIENCEandTECHNOLOGY
此時(shí)BB類(lèi)的構(gòu)造函數(shù)為:
(形參表):a1(實(shí)參表)聲2(實(shí)參表){
)
構(gòu)造函數(shù)調(diào)用的次序?yàn)橄日{(diào)用構(gòu)造函數(shù)生成
對(duì)象成員a1,a2,再調(diào)用BB的構(gòu)造函數(shù)生成
對(duì)象。
2012-10-2323
JIANSHUUNIVERSITYofSCIENCEandTECHNOLOGY
始化劉家成員。
任務(wù):
(1)定義類(lèi)A;
(2)定義類(lèi)B;
(3)定義類(lèi)C,其中用類(lèi)A及類(lèi)B的對(duì)象作成員;
(4)定義主函數(shù)測(cè)試類(lèi)。
#include<iostream.h>
classA{
intx5y;
public:
A(inta,intb){x=a;y=b;}
voidShow(){
cout?,,x="?x?,\t,?,,y=,,?y?,\n,;
)
2012-10-2};
24
1IANSHUUNIVERSITYofSCIENCEandTECHNOLOGY
intLength,Width;
public:
B(inta,intb){
Length=a;Width=b;
)
voidShow(){
cout?,,Length=,,<<Length?,\t,
<<,,Width=u<<Width?,\n,;
)
);
2012-10-2325
1IANSHUUNIVERSITYofSCIENCEandTECHNOLOGY
class5
intr,High;
Aa1;〃定義了類(lèi)A的對(duì)象a1
Bb1;〃定義了類(lèi)B的對(duì)象b1
public:
C(inta,intb,intcjntd,inte,intf):a1(e,f),b1(Gd)
{r=a;
High=b;
)
voidShow(){
cout?,,r=',<<r?,\t,?,,High=',?High?,\n,;
a1.Show();
b1.Show();
)
20J-50-23
26
1IANSHUUNIVERSITYofSCIENCEandTECHNOLOGY
voidmain(void){
Cc1(25,35,45,55,65/00);
c1.Show();
)
輸出:r=25Hihg=35
x=65y=100
Length=45Width=55
2012-10-2327
JIANSHUUNIVERSITYofSCIENCEandTECHNOLOGY
類(lèi)型轉(zhuǎn)換構(gòu)造函數(shù)
若定義類(lèi)AA如下:
classAA{
intx;
public:
AA(inta){x=a;}
);
此時(shí)可用下列語(yǔ)句給對(duì)象賦值:
AAmm=5;
但當(dāng)成員多于一個(gè)時(shí),必須用類(lèi)型轉(zhuǎn)換構(gòu)造函
數(shù)。類(lèi)型轉(zhuǎn)換構(gòu)造函數(shù)的格式同一般的構(gòu)造函數(shù),
其本質(zhì)為強(qiáng)制轉(zhuǎn)換。
2012-10-2328
JIANSHUUNIVERSITYofSCIENCEandTECHNOLOGY
classBB{
intx;
floaty;
public:
BB(inta=0,floatb=0){x=a;y=b;}
};
則此時(shí)可用下列語(yǔ)句給對(duì)象賦值:
BBmm(3,6.8),nn;〃定義對(duì)象
nn=BB(5,1.9);〃調(diào)用類(lèi)型轉(zhuǎn)換構(gòu)造函數(shù)
2012-10-2329
JIANSHUUNIVERSITYofSCIENCEandTECHNOLOGY
蹙函數(shù)
1、完成拷貝功能構(gòu)造函數(shù)的作用
我們知道用構(gòu)造函數(shù)可以初始化對(duì)象,那么能不能象簡(jiǎn)
單變量的初始化一樣,直接用一個(gè)對(duì)象來(lái)初始化另一
個(gè)對(duì)象呢?答案是肯定的。以前面定義的Point類(lèi)為
例:
PointP(15,25);
PointQ=P;
后一個(gè)語(yǔ)句也可以寫(xiě)成:
PointQ(P);
表示用P初始化Q,此時(shí),Q各個(gè)成員的值與P各個(gè)
成員的值相同,也就是說(shuō),P各個(gè)成員的值被復(fù)制到
Q相應(yīng)的成員當(dāng)中。在這個(gè)初始化過(guò)程當(dāng)中,實(shí)際上
如為周用了一個(gè)拷貝構(gòu)造函數(shù)?!?lt;>3(
JIANSHUUNIVERSITYofSCIENCEandTECHNOLOGY
、拷貝構(gòu)造函數(shù)的定義
當(dāng)構(gòu)造函數(shù)的參數(shù)為自身類(lèi)的引用時(shí),這個(gè)構(gòu)造函數(shù)
稱(chēng)為拷貝構(gòu)造函數(shù)。拷貝構(gòu)造函數(shù)的功能是用一個(gè)
已有對(duì)象初始化一個(gè)正在建立的同類(lèi)對(duì)象。
拷貝構(gòu)造函數(shù)的一般格式為:
類(lèi)名::類(lèi)名(類(lèi)名&對(duì)象名){
函數(shù)體
)
如果不顯式定義拷貝構(gòu)造函數(shù),編譯器會(huì)隱式定義一
個(gè)缺省的拷貝構(gòu)造函數(shù),它是一個(gè)內(nèi)聯(lián)的、公有的
成員函數(shù),它將參數(shù)對(duì)象的所有成員拷貝給當(dāng)前對(duì)
象的對(duì)應(yīng)成員。
2012-10-2331
JIANSHUUNIVERSITYofSCIENCEandTECHNOLOGY
3、拷貝構(gòu)造函數(shù)的使用
?一般當(dāng)需要將參數(shù)對(duì)象的部分成員拷貝給當(dāng)
前對(duì)象的對(duì)應(yīng)成員時(shí),要顯式定義拷貝構(gòu)造
函數(shù)。
2012-10-2332
JIANSHUUNIVERSITYofSCIENCEandTECHNOLOGY
例10?5重新定義Point類(lèi),并在其中設(shè)計(jì)拷貝構(gòu)造
函數(shù)。
任務(wù):
(1)定義類(lèi)Point;
(2)在其中定義拷貝構(gòu)造函數(shù)。
2012-10-2333
1IANSHUUNIVERSITYofSCIENCEandTECHNOLOGY
#include<iostream.h>
classPoint{
intx,y;
public:
Point(inta=0,intb=0);〃構(gòu)造函數(shù)
Point(Point&P);〃拷貝構(gòu)造函數(shù)
voidprintXY(){cout?x?,\t,;cout?y?,\n,;}
);
Point::Point(inta,intb){
x=a;y=b;
}
2012-10-2334
JIANSHUUNIVERSITYofSCIENCEandTECHNOLOGY
x=Rx;
y=o;
)
voidmain(){
Pointp1(1,2);
IIp1對(duì)象的x和y的初值分別為1和2
Pointp2(p1);
〃p2對(duì)象的x和y的初值分別為1和0
p2.printXY();
)
注意:當(dāng)類(lèi)中含有指針成員時(shí),必須顯式地定義
拷貝構(gòu)造函數(shù)。
2012-10-2335
JIANSHUUNIVERSITYofSCIENCEandTECHNOLOGY
定義
定義一個(gè)對(duì)象時(shí),VC++自動(dòng)調(diào)用構(gòu)造函數(shù)建立該
對(duì)象并進(jìn)行初始化,同樣當(dāng)一個(gè)對(duì)象的生命周期
結(jié)束時(shí),VC++也會(huì)自動(dòng)調(diào)用一個(gè)函數(shù)釋放該對(duì)象
并進(jìn)行善后工作,這個(gè)特殊的成員函數(shù)即為析構(gòu)
函數(shù)。
析構(gòu)函數(shù)的一般格式為:
類(lèi)名:尸類(lèi)名(){
函數(shù)體
2012-10-2336
JIANSHUUNIVERSITYofSCIENCEandTECHNOLOGY
有關(guān)析構(gòu)函數(shù)定義的幾點(diǎn)說(shuō)明:
(1)析構(gòu)函數(shù)可在類(lèi)內(nèi)定義,也可在類(lèi)外定義。
(2)析構(gòu)函數(shù)名與類(lèi)名相同,但在前面加上字符。
(3)析構(gòu)函數(shù)無(wú)函數(shù)返回類(lèi)型,且不帶任何參數(shù)。
(4)析構(gòu)函數(shù)不可重載,故析構(gòu)函數(shù)只有一個(gè)。
(5)析構(gòu)函數(shù)可以缺省。缺省的析構(gòu)函數(shù)為:
類(lèi)名::~類(lèi)名(){}
2012-10-2337
J1ANSHUUNIVERSITYofSCIENCETECHNOLOGY
的使用
析構(gòu)函數(shù)是在對(duì)象釋放時(shí),系統(tǒng)自動(dòng)調(diào)用
的。
例10?6析構(gòu)函數(shù)使用示例。
任務(wù):
(1)定義類(lèi)Point;
(2)在類(lèi)Point中顯式定義析構(gòu)函數(shù);
(3)定義主函數(shù),在其中定義對(duì)象,測(cè)試類(lèi)定義。
2012-10-2338
1IANSHUUNIVERSITYofSCIENCEandTECHNOLOGY
#include<iostream.h>
classPoint{
intx,y;
public:
Point(inta,intb);
voidprintXY(){cout?x?5\f;cout?y?5\nJ;}
~Point(){
coutvv”調(diào)用了析構(gòu)函數(shù)!\n";
)
);
2012-10-2339
1IANSHUUNIVERSITYofSCIENCEandTECHNOLOGY
Point::Point(inta,intb){
x=a;y=b;
)
voidmain(){
Pointp1(1,2);
IIp1對(duì)象的x和y的初值分別為1和2
p1.printXY();
)
輸出:12
調(diào)用了析構(gòu)函數(shù)!
2012-10-2340
JIANSHUUNIVERSITYofSCIENCEandTECHNOLOGY
關(guān)于析構(gòu)函數(shù)使用的幾點(diǎn)說(shuō)明:
(1)如果在構(gòu)造函數(shù)或程序的執(zhí)行過(guò)程中,用
new為對(duì)象的某一個(gè)指針成員動(dòng)態(tài)申請(qǐng)了空間,
那么在類(lèi)中必須定義一個(gè)析構(gòu)函數(shù),并在析構(gòu)函
數(shù)中使用delete運(yùn)算符收回為字符串所分配的存
儲(chǔ)空間。
(2)當(dāng)用new動(dòng)態(tài)生成對(duì)象時(shí),必須用delete回
收空間。
(3)當(dāng)一個(gè)類(lèi)中含有另一個(gè)類(lèi)的對(duì)象成員時(shí),析
構(gòu)函數(shù)的調(diào)用次序與構(gòu)造函數(shù)的調(diào)用次序相反。
2012-10-2341
JIANSHUUNIVERSITYofSCIENCEandTECHNOLOGY
用析構(gòu)函數(shù)收回動(dòng)態(tài)分配的空間。
任務(wù):
(1)定義含指針成員的類(lèi)String;
(2)在類(lèi)中顯式定義構(gòu)造函數(shù)及析構(gòu)函數(shù);
(3)定義主函數(shù)測(cè)試所定義的類(lèi)。
2012-10-2342
1IANSHUUNIVERSITYofSCIENCEandTECHNOLOGY
<iostream.h>
#include<string,h>
classString{
char*str;
public:
String(char*p){
if(P)(
str=(char*)newchar[strlen(p)+1];
strcpy(str,p);
)
elsestr=O;
)
2012-10-2343
1IANSHUUNIVERSITYofSCIENCEandTECHNOLOGY
voidprint(){
cout?str?,\n,;
}
~String(){
if(str)delete[]str;
}
);
voidmain(){
Stringpp(“VC++程序設(shè)計(jì)”);
pp-print();
)
輸出:VC++程序設(shè)計(jì)
2012-10-2344
JIANSHUUNIVERSITYofSCIENCEandTECHNOLOGY
例10?8用delete回收動(dòng)態(tài)生成的對(duì)象。
任務(wù):
(1)定義含顯式構(gòu)造函數(shù)及析構(gòu)函數(shù)的類(lèi)Point;
(2)定義主函數(shù),其中用new創(chuàng)建對(duì)象。
2012-10-2345
1IANSHUUNIVERSITYofSCIENCEandTECHNOLOGY
#include<iostream.h>
classPoint{
intx,y;
public:
Point(inta,intb){x=a;y=b;}
voidprintXY(){cout?x?J\f;cout?y?,\n5;}
~Point(){
coutvv”調(diào)用了析構(gòu)函數(shù)!\rT;
)
);
2012-10-2346
1IANSHUUNIVERSITYofSCIENCEandTECHNOLOGY
voidmain()
Point*p1=newPoint(1,2);
p1->printXY();
deletep1;
)
輸出:12
調(diào)用了析構(gòu)函數(shù)!
2012-10-2347
JIANSHUUNIVERSITYofSCIENCEandTECHNOLOGY
例10?9構(gòu)造函數(shù)與析構(gòu)函數(shù)的調(diào)用順序。
任務(wù):
(1)定義類(lèi)Obj;
(2)定義類(lèi)Con,其中含Obj的對(duì)象成員;
(3)定義主函數(shù)測(cè)試所定義的類(lèi)。
2012-10-2348
JIANSHUUNIVERSITYofSCIENCEandTECHNOLOGY
#include<iostream.h>
classObj{
intval;
public:
Obj(){
val=O;
coutvvvalvvM'vv1'調(diào)用Obj缺省的構(gòu)造函數(shù)!\nK;
)
Obj(inti){
val=i;
coutvvvalvvM'vv”調(diào)用Obj的構(gòu)造函數(shù)!\nf,;
)
~Obj(){
coutw”調(diào)用Obj的析構(gòu)函數(shù)!\nM;
);
2012-10-2349
JIANSHUUNIVERSITYofSCIENCEandTECHNOLOGY
Objone,two;
intdata;
public:
Con(){
data=0;
coutvvdatavv,\t,vv,,調(diào)用Con缺省的構(gòu)造函數(shù)!\nM;
)
Con(inti,intj,intk):one(k),two(i+j){
data=i;
coutvvdatavv,\t,vv,,調(diào)用Con的構(gòu)造函數(shù)!\n";
)
~Con(){coutvvi,調(diào)用Con的析構(gòu)函數(shù)!\n";}
■2012-10-2350
)5
JIANSHUUNIVERSITYofSCIENCEandTECHNOLOGY
voidmain(void){
Conc(100,200,400);
〃先生成對(duì)象one,再生成對(duì)象two,最后生成對(duì)象c
)
輸出:400調(diào)用Obj的構(gòu)造函數(shù)!
300調(diào)用Obj的構(gòu)造函數(shù)!
100調(diào)用Con的構(gòu)造函數(shù)!
調(diào)用Con的析構(gòu)函數(shù)!
調(diào)用Obj的析構(gòu)函數(shù)!
調(diào)用Obj的析構(gòu)函數(shù)!
2012-10-2351
JIANSHUUNIVERSITYofSCIENCEandTECHNOLOGY
大型時(shí)對(duì)象調(diào)用構(gòu)造函數(shù)及析
構(gòu)函數(shù)
表10-1構(gòu)造函數(shù)和析構(gòu)函數(shù)的調(diào)用時(shí)間
對(duì)象類(lèi)型構(gòu)造函數(shù)調(diào)用析構(gòu)函數(shù)調(diào)用
全局對(duì)象程序運(yùn)行程序結(jié)束
局部對(duì)象對(duì)象定義處離開(kāi)程序塊
第一次執(zhí)行對(duì)象定
靜態(tài)局部對(duì)象程序結(jié)束
義處
new動(dòng)態(tài)創(chuàng)建的
創(chuàng)建對(duì)象處delete顯式撤消
對(duì)象
2012-10-2352
JIANSHUUNIVERSITYofSCIENCEandTECHNOLOGY
例10?10不同類(lèi)型對(duì)象構(gòu)造函數(shù)和析構(gòu)函數(shù)的調(diào)用。
任務(wù):
(1)定義類(lèi)Point,分別定義不含參數(shù)、含一個(gè)參
數(shù)、含二個(gè)參數(shù)及含三個(gè)參數(shù)的構(gòu)造函數(shù);
(2)分別定義全局、局部、靜態(tài)、動(dòng)態(tài)生成的對(duì)象,
分析構(gòu)造函數(shù)與析構(gòu)函數(shù)的調(diào)用次序。
2012-10-2353
1IANSHUUNIVERSITYofSCIENCEandTECHNOLOGY
#in
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- T-ZSA 232-2024 特種巡邏機(jī)器人通.用技術(shù)要求
- T-ZJHQ 0003-2024 高等學(xué)校生活垃圾分類(lèi)工作規(guī)范
- 2025年度電子商務(wù)平臺(tái)數(shù)據(jù)分析與報(bào)告合同模板
- 二零二五年度解除婚約合同范本:婚約解除后的財(cái)產(chǎn)清算、債務(wù)處理及子女監(jiān)護(hù)協(xié)議
- 2025年度鋼板租賃與回收利用合同
- 二零二五年度金融機(jī)構(gòu)資金轉(zhuǎn)入風(fēng)險(xiǎn)管理合同
- 2025年度智慧能源管理系統(tǒng)擔(dān)保人履約保證合同
- 二零二五年度企業(yè)綠色金融項(xiàng)目補(bǔ)貼協(xié)議
- 二零二五年度情人協(xié)議書(shū):浪漫愛(ài)情生活規(guī)劃合同范本
- 石壕吏:歷史背景與社會(huì)問(wèn)題分析教學(xué)教案
- 濕式氣柜培訓(xùn)
- 2023年高考真題-化學(xué)(福建卷) 含解析
- 欄桿拆除及更換施工方案
- 10我們愛(ài)和平(第1課時(shí))(說(shuō)課稿)2023-2024學(xué)年統(tǒng)編版道德與法治六年級(jí)下冊(cè)
- 《國(guó)際貿(mào)易實(shí)務(wù)(英文版)》(英文課件) -Ch 6 International Cargo Transport-Ch 11 Cross-border Commerce
- 新條令.新亮點(diǎn)-內(nèi)務(wù)條令解讀
- 中醫(yī)適宜技術(shù)-中藥熱奄包
- 林海雪原課件6張
- 銀發(fā)經(jīng)濟(jì)產(chǎn)業(yè)發(fā)展規(guī)劃
- 防火涂料質(zhì)量保證書(shū)
- 礦產(chǎn)資源開(kāi)發(fā)合同備忘錄范本
評(píng)論
0/150
提交評(píng)論