版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
C++復(fù)習(xí)資料(源代碼)
西安財經(jīng)大學(xué)信息學(xué)院軟件工程1202:羅偉著
⑴析構(gòu)順序模型
#include<iostream>
#include<string>
#include<iomanip>
usingnamespacestd;
classA
{public:
A(int,string);
~A();
private:
intid;
stringmessage;};
A::A(intid2,stringmessage?)
{id=id2;
message=message2;
cout<<”對象構(gòu)造函數(shù)正在運行:"v<set\M4)<<message<<endl;
cout?"\nn;
)
A::~A()
{cout?(id==2||id==6)?"\n":"
cout<<“對象:析構(gòu)函數(shù)正在運行:"<<setv\^4)<<message<<endl;
cout?"\n";
}
voidcreat(void);
Afirst(l,“全局對象)
intmain()
{cout<<”主函數(shù)現(xiàn)在執(zhí)行:\n"?endl;
Asecond。,”(主函數(shù)中的局部對象)”);
staticAthird⑶"(主函數(shù)中的靜態(tài)對象)”);
creat();
cout<<”主函數(shù)再次執(zhí)行:\n";
Aforth(4J(主函數(shù)中的局部對象)”);
cout<<”主函數(shù)執(zhí)行完畢\n”;
return0;
}
voidcreat(void)
{cout?"creat函數(shù)開始執(zhí)行:\n"?endl;
Afifth(5J(creat中的局部對象)”);
staticAsixth(6,"(creat中的靜態(tài)對象)");
Aseventh(7/'(creat中的局部對象)");
cout?"creat函數(shù)結(jié)束:\n"?endl;
)
析構(gòu)時先析構(gòu)局部(動態(tài))對象,后析構(gòu)全局(靜態(tài))對象。靜態(tài)變量(對象)等價于全局
變量(對象),動態(tài)變量(對象)等價于局部變量(對象)。當(dāng)函數(shù)退出程序段(包括主函數(shù)
或者自定義的函數(shù)段)開始調(diào)用析構(gòu)函數(shù),和構(gòu)造函數(shù)調(diào)用的順序相反。
(2):const模型
#include<iostream>
usingnamespacestd;
classA
{public:
A(intc=OJnti=0);〃這里是為對象設(shè)置默認(rèn)值,若不對私有變量賦值則使用默認(rèn)值;同時
A(int=O,int=O)還可以改為A(intc=O,inti=O)的形式//
voidaddA()
{count+=a;
)
voidprint()const;
private:
intcount;
constinta;
);
A::A(intc,inti):count(c),a(i)
(
}
voidA::print()const
{cout?"countis"?count?""?"ais:"?a;
)
intmain()
{Avae,vbe(12/12);
vae.print();
cout?"\n";
vbe.print();
cout?"\n";
vbe.addA();
vbe.print();
return0;
)
Const數(shù)據(jù)和引用數(shù)據(jù)變量必須定義時為其賦值。采用成員初始化器,const數(shù)據(jù)一定以后就
不能被修改。Const成員函數(shù)不能修改對象。而const對象只能調(diào)用const函數(shù),非const函
數(shù)可以調(diào)用const和非const函數(shù)。Static成員變量可看成全局變量,可以被公有地訪問。即
類名::變量名。
⑶組合模型:
#include<iostream>
#include<cstring>
usingnamespacestd;
classdate
{public:
date(int=l,int=l,int=1900);
voidprint()const;
~date();
private:
intmonth;
intday;
intyear;
intcheakday(int)const;
);
date::date(intmnjntdyjntyr)
{month=(0<mn&&mn<=12)?mn:l;
year=yr;
day=cheakday(dy);
print();
)
voiddate::print()const
{cout?month?7"?day?7"?year?"\n"?endl;
)
date::~date()
{cout?"date析構(gòu)函數(shù):\n";
print();
)
intdate::cheakday(inttestday)const
{staticconstintdayspermonth[13]
{0,31,28,31,30,31,3031,31,30,313031
);
if(O<testday&&testday<dayspermonth[month])
returntestday;
if(month==2&&testday==29&&(year%400==011(year%4==0&&year&100!=0)))
returntestday;
elsereturn28;
)
classemployee
{public:
employee(constchar*const,constchar*const,constdate&,constdate&);
voidprint()const;
~employee();
private:
charfirstname[25];
charlastname[25];
constdatebirth;
constdatehire;
);
employee::employee(constchar*constfirst,constchar*constlast,constdate&birthdatezconst
date&hiredate):birth(birthdate),hire(hiredate)
{intlenth=strlen(first);
strncpy(firstnamezfirst,lenth);
firstname[lenth]='\O';
lenth=strlen(last);
strncpy(lastnamejastjenth);
lastname[lenth]='\O';
cout?"^fc^:"?firstname?""?lastname;
)
voidemployee::print()const
{cout?firstname?""?lastname?":"?',hired"?"\n";
hire.print();
birth.print();
}
employee::~employee()
{cout?"employee析構(gòu)函數(shù):"<<firstname<<""<<lastname;
)
intmain()
{datebirth(7,26,1993);
datehire(6,7,2014);
employeemanager(“羅偉”,birth,hire);
cout?"\n";
manager.print();
return0;
}
組合:成員對象也要用成員初始化器賦值。
⑷友元函數(shù)模型
#include<iostream>
usingnamespacestd;
classcount
{friendvoidsetx(count&,int);
public:
count(int=5);
voidprint()const;
private:
intx;
);
count::count(intx2):x(x2)
voidcount::print()const
{cout?,,x="?x?"\n";
)
voidsetx(count&C,intvae)
{C.x=vae;
}
intmain()
{countA;
cout?"A的初值:H?"\n";
A.print();
setx(A,6);
cout?"A的新值
A.print();
return0;
)
(5)this指針模型:
include<iostream>
usingnamespacestd;
classtest
{public:
test(int=1);
voidprint()const;
private:
intx;};
test::test(intvae):x(vae)
(
)
voidtest::print()const
{cout?"x="?x;
cout?"\nthis->="?this->x;
cout?"\n(*this).x="?(*this).x;
)
intmain()
{testA(6);
A.print();
return0;
)
⑹模板模型
/*#include<iostream>
usingnamespacestd;
template<typenameT>
voidprintarray(constT*array,intn)
{inti;
for(i=0;i<n;i++)
cout?array[i]?"H;
cout?"\n";
)
intmain()
{constintA=5;
constintB=6;
constintC=7;
inta[A]={l,2,3A5};
floatb[B]={l.l,2.2,3.3,4.4,5.5,6.6};
charc[C]="ABCDEF";
printarray(a,A);
printarray(b,B);
printarray(c,C);
return0;
}*/
include<iostream>
usingnamespacestd;
template<typenameT>
classstack
{public:
stack(int=10);
boolisfull()
{returntop==size-l;
)
boolisempty()
{returntop==-l;
)
boolpush(constT&);
boolpop(T&);
private:
intsize;
T*stackptr;
inttop;
);
template<typenameT>
stack<T>::stack(ints):size(s>0?s:10),stackptr(newT[size]),top(-1)
{coutvv”構(gòu)造函數(shù)運行完畢:\n”;
)
template<typenameT>
boolstack<T>::push(constT&ave)
stackptr[++top]=ave;
returntrue;}
else
returnfalse;
)
template<typenameT>
boolstack<T>::pop(T&vae)
{if(!isempty())
{vae=stackptr[top-];
returntrue;
}
else
returnfalse;
}
intmain()
{stack<double>A(7);
doublevae=l.l;
cout?"l將元素依次進(jìn)棧:\n“;
while(A.push(vae))
{cout?vae?'7';
vae+=l.l;
)
coutv<”\nl棧滿,無法進(jìn)棧:\n”;
cout<<"將元素依次出棧:\n";
while(A.pop(vae))
n
cout?vae?"/;
cout<<”\nl棧空,無法出棧:\n”;
stack<int>B(6);
intvoe=2;
cout?"2將元素依次進(jìn)棧:\n”;
while(B.push(voe))
,,
{cout?voe?/";
voe++;
}
cout?”\n2棧滿,無法進(jìn)棧:\n";
cout<<"將元素依次出棧:\n";
while(B.pop(voe))
cout?voe?'7,;
cout?”\n2???,無法出棧:\n";
return0;
1.1,2.2,3.3,4.4,5.5,6.6,7.7
將元第
7.7,6.6,5.5,4.4,3.3,2.2,1.1
1??眨瑹o濤出我:
2,3,4,5,6,7.
2棧滿,
將元素
7,6?5,4,3,2,
2???,無法出棧:
⑺:this指針的級聯(lián)調(diào)用模型:
#include<iostream>
#include<iomanip>
usingnamespacestd;
classtime
{public:
time(int=lzint=l,int=l);
time&settime(intJntJnt);
time&sethour(int);
time&setminute(int);
time&setsecond(int);
voidprintuniversal()const;
voidprintstandard()const;
private:
inthour;
intminute;
intsecond;
);
time::time(inthjntmjnts)
{settime(hzmzs);
)
time&time::settime(inthhjntmm,intss)
{sethour(hh);
setminute(mm);
setsecond(ss);
return*this;
)
time&time::sethour(inthl)
{hour=(hl>=0)?hl:0;
return*this;
)
time&time::setminute(intml)
{minute=(ml>=0&&ml<60)?ml:0;
return*this;
)
time&time::setsecond(intsi)
{second=(sl>=0&&sl<60)?sl:0;
return*this;
)
voidtime::printstandard()const
{cout<<“全國標(biāo)準(zhǔn)時間:\n”;
cout?((hour==011hour==12)?0:hour%24)?":"?setw(2)?minute?setw(2)?n:"?setw(2)?se
cond?((hour>=0&&hour<12)?"AM":"PM")?"\n";
)
voidtime::printuniversal()const
{cout<<“全國統(tǒng)一時間:\n”;
cout?setw(2)?setw(2)?hour?":"?setw(2)?minute?":,,?setw(2)?second?"\n";
)
intmain()
{timeAl(18,25,16);
timeA2(16/34/27);
cout<<“輸出Al的時間格式:\n“;
Al.printuniversal();
Al.printstandard();
cout<<”輸出A2的時間格式:\n";
A2.printuniversal();
A2.printstandard();
Al.settime(25z25,25).sethour(25).setminute(25).setsecond(25);
cout<<“輸出更改后Al的時間格式:\n";
Al.printuniversal();
Al.printstandard();
return0;
2
-
出加的0寸各式
0
國一0寸
統(tǒng):
:2
18
兼16
-
全國準(zhǔn)n
-
H
m
M
、
5
6M
:2
-
18格式
:1
^出筆的
3
<
-
n
H
國一3:
M
w繁
:3標(biāo)時間
16
全國27準(zhǔn)?
?
4
M
:3
7P
1寸、可格式
16日
量出:2改
ihh
q
A1間
J
國■
一■
間
:2標(biāo)時
25
全國25準(zhǔn)
:
1
PM
:
25
25
模型
算符
,口運
,delete
⑻:new
m>
ostrea
de<i
#inclu
ip>
oman
de<i
#inclu
string>
de<c
#inclu
std;
pace
ames
usingn
A
class
lic:
{pub
st);
*con
tchar
cons
onst,
har*c
nstc
A(co
~A();
nst
e()co
stnam
getfir
char*
const
e;
tnam
nfirs
{retur
)
nst
e()co
astnam
*getl
tchar
cons
ame;
nlastn
{retur
)
)
ount(
intgetc
static
nt;
ncou
{retur
)
:
private
me;
firstna
char*
e;
lastnam
char*
nt;
intcou
static
);
t=0;
coun
intA::
st)
onstla
har*c
nstc
rst,co
nstfi
ar*co
stch
(con
A::A
l];
st))+
n(fir
(strle
char[
new
ame=
{firstn
irst);
ame,f
(firstn
strcpy
+l];
ast))
len(l
[(str
char
ew
me=n
lastna
;
ejast)
nam
y(last
strcp
t++;
coun
”;
v”\n
ame<
<firstn
W2)<
<<set\
name
<<last
服務(wù):"
此對象
正在為
造函數(shù)
?”構(gòu)
cout
A::~A()
{cout<<”析構(gòu)函數(shù)正在為此對象服務(wù):"<<lastname<<setw(2)<<firstname<<”\n”;
delete[]firstname;
delete[]lastname;
count-;
intmain()
{cout<<"未定義時的對象個數(shù):"<<A::getcount()?"\n”;
A*Alptr=newA("邁克爾喬丹)
A*A2ptr=newA(“凱文杜朗特”);
cout<<”定以后的對象個數(shù)iZvA=getcountOvCn”;
cout<<“輸出Al的信息:"<<Alptr->getlastname()<<setw(2)<<Alptr->getfirstname()<<”\n”;
cout<<沖俞出A26\l{sM:',?Alptr->getlastname()?setw(2)?Alptr->getfirstname()?"\n";
deleteAlptr;
Alptr=O;
deleteA2ptr;
A2ptr=O;
cout<<”析構(gòu)后的人數(shù):"<<A::getcount()<<”\n”;
return0;
譽
嚏
定
義
的
至
造
正
一
丹邁
函:03
夕
為T
afi
造
在
正
翳特
函HIR-
以P
個i':M,RR
以^V
后
善
史2
療
力
出
晟
、5
置
^丹
行
力
出
Al5霜S.
H莒
A2函
艮
委
象
月
S.務(wù)
丹
正
邁
U為
以
函
象
募
艮
月
務(wù)
翳
特
正
為
后
入
:
二:/*#include<iostream>
#include<cstring>
usingnamespacestd;
classdate
{public:
date(int=lzint=l,int=1900);
~date();
voidprint()const;
private:
intmonth;
intday;
intyear;
intcheakday(int)const;
};
date::date(intmmjntddjntyr)
{month=(0<mm<=12)?mm:0;
year=yr;
day=cheakday(dd);
print();
)
intdate::cheakday(inttest)const
{staticconstintdays[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
if(O<test&&test==days[month])
returntest;
if(month==2&&test==29&&((year%400==0)11(year%4==0&&year%100!=0)))
returntest;
else
return28;
}
date::~date()
{cout?"date析構(gòu)函數(shù):\n";
print();
)
voiddate::print()const
{cout?Kdate類print函數(shù):\n";
cout?month?7"?day?7"?year?"\n";
)
classA
{public:
A(constchar*const,constchar*constzconstdate&,constdate&);
voidprint()const;
~A();
private:
charfirstname[25];
charlastname[25];
constdatebirth;
constdatehire;
};
A::A(constchar*constfirst,constchar*constlast,constdate&birthdate,const
date&hiredate):birth(birthdate),hire(hiredate)
{intlenth=strlen(last);
strncpy(lastnamejastjenth);
lastname[lenth]='\O';
lenth=strlen(first);
strncpyffirstnamejirstjenth);
firstname[lenth]='\O';
cout<<“姓名為:"<<lastname?firstname;
voidA::print()const
{cout?"A類print函數(shù):\n";
cout<<"雇員姓名:"<<lastname<<firstname<<,'被錄取為manager\n";
hire.print();
birth.print();
)
A::~A()
{cout?"A類析構(gòu)函數(shù):“<<lastname<<firstname<<”\n”;
)
intmain()
{datebirth。,26,1993);
datehire(6,7,2014);
Amanager(“偉”J羅'birth,hire);
manager.print();
return0;
)*/
(9):函數(shù)的重載電話模型:重載為(有元函數(shù))全局函數(shù)
#include<iostream>
#include<iomanip>
include<cstring>
usingnamespacestd;
classphonenumber
{friendistream&operator?(istream&zphonenumber&);
friendostream&operator?(ostream&,constphonenumber&);
private:
stringareacode;
stringexchange;
stringline;
);
ostream&operator?(ostream&output,constphonenumber&A)
{output?"("?A.areacode?")H?A.exchange?"-"?A.line?"\n";
returnoutput;
)
istream&operator?(istream&input,phonenumber&A)
{input?setw(3)?A.areacode;
input?setw(4)?A.exchange;
input?setw(4)?A.line;
returninput;
)
intmain()
{phonenumberA;
cout<<”鍵入號碼:\n”;
cin?A;
cout<<”輸出號碼:\n”;
cout?A;
return0;
)
鍵入號碼:
023
8788
4215
輸出號碼:
<023>8788-4215
(10)運算符重載一數(shù)組模型:
#include<iostream>
#include<iomanip>
#include<stdlib.h>
usingnamespacestd;
classarray
{friendostream&operator?(ostream&,constarray&);
friendistream&operator?(istream&,array&);
public:
array(int=10);
array(constarray&);
~array();
constarray&operator=(constarray&);
booloperator==(constarray&);
booloperator!=(constarray&);
int&operator[](int);
intoperator[](int)const;
intgetsize()const
{returnsize;
}
private:
intsize;
int*ptr;
);
array::array(ints):size((s>0?s:10))
{ptr=newint[size];
for(inti=0;i<size;i++)
ptr[i]=O;
)
array::array(constarray&A)
{size=A.size;
ptr=newint[size];
for(inti=0;i<size;i++)
ptr[i]=A.ptr[i];
)
constarray&array::operator=(constarray&a)
{if(&a!=this)
{if(size!=a.size)
{delete[]ptr;
size=a.size;
ptr=newint[size];
}
for(inti=0;i<size;i++)
ptr[i]=a.ptr[i];
)
)
boolarray::operator==(constarray&right)
{if(size!=right.size)
returnfalse;
for(inti=0;i<size;i++)
if(ptr[i]!=right.ptr[i])
returnfalse;
returntrue;
)
boolarray::operator!=(constarray&right)
{return!(*this==right);
)
int&array::operator[](inti)
{if(i<0||i>size)
{cerr?":"?i?,,:\n";
exit⑴;
)
returnptr[i];
)
intarray::operator[](inti)const
{if(i<0||i>size)
{cerr?":"?i?":\n";
exiHl);
)
returnptr[i];
)
ostream&operator?(ostream&output,constarray&A)
{inti;
for(i=O;i<A.size;i++)
(
output?setw(3)?A.ptr[i];
if((i+l)%5==0)
output?endl;
)
if(i%5==0)
output?endl;
returnoutput;
)
istream&operator?(istream&input,array&A)
{for(inti=O;i<A.size;i++)
input?A.ptr[i];
returninput;
}
arrayi^arrayO
{delete[]ptr;
}
intmain()
{arrayAl⑺;
arrayA2;
cout<<"輸出Al的大小:"<<Al.getsize()v<”\n輸出Al:\n"?Al;
cout?"\n輸出A2的大小:“<<A2.getsize()<<”\n輸出A2:\n"?A2;
cout<<"重新輸入Al,A2:\n";
cin?Al;
cin?A2;
cout<<"輸出Al的大小:"<<Al.getsize()?”\n輸出Al:\n"?Al;
cout?"\n輸出A2的大小:''<<A2.getsize()v<”\n輸出A2:\n"?A2;
if(A1!=A2)
cout?"Al!=A2:\n"?HfflAl初始化A3:\n";
arrayA3(A1);
cout<<"輸出A3的大小:"<<A3.getsize()?”\n輸出A3:\n"?A3;
cout?"\n用A2初始化Al:\n";
A1=A2;
if(A1==A2)
cout?"Al==A2:\n";
cout?"Al[5]="?Al[5]?"\n輸出Al:\n";
Al⑸=1000;
cout?"Al[5]="?Al[5]?"\n輸出A3:\n"?Al;
return0;
輸出虱的大小
輸出Ai:
00000
00
法中A2的大
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 紙袋制作課件教學(xué)課件
- 防蜇課件教學(xué)課件
- 獲獎 課件教學(xué)課件
- 2024年度農(nóng)產(chǎn)品收購合同
- 2024年企業(yè)安全評價與咨詢服務(wù)合同
- 2024年度空氣能設(shè)備安裝與驗收合同
- 2024國際快遞服務(wù)全面合作協(xié)議
- 2024樁基工程施工合同范本樁基工程施工合同
- 2024年企業(yè)合并收購協(xié)議
- 2024個人租房的合同模板范本
- 分層次教學(xué)與個性化輔導(dǎo)計劃
- 基于物聯(lián)網(wǎng)的農(nóng)業(yè)無人機高效配送方案
- 毛細(xì)支氣管炎護理查房課件
- EHS(環(huán)境健康安全)管理制度
- GB/T 10476-2024尿素高壓冷凝器技術(shù)條件
- 2024-2030年中國金融BPO行業(yè)市場發(fā)展分析及投資前景與策略研究報告
- 二年級《公共安全教育》全冊教學(xué)設(shè)計
- 2024-2025學(xué)年小學(xué)科學(xué)四年級下冊青島版(六三制2024)教學(xué)設(shè)計合集
- 2024版中國血脂管理指南
- 2022下半年四川省考公務(wù)員考試行測題及解析(三十二)
- 58級14班高考倒計時200天主題班會
評論
0/150
提交評論