day02作業(yè):
1倦始、常引用的作用?
保護(hù)傳遞給函數(shù)的數(shù)據(jù)不在函數(shù)中被改變
2、拷貝構(gòu)造函數(shù)為什么可以訪問(wèn)其私有成員脆炎?
3梅猿、編一個(gè)程序,從 string 對(duì)象中去掉標(biāo)點(diǎn)符號(hào)秒裕。要求輸入到程序的字符串必須含有標(biāo)點(diǎn)符號(hào)袱蚓,輸出結(jié)果則是去掉標(biāo)點(diǎn)符號(hào)后的 string 對(duì)象。?注:調(diào)用ispunct(c)几蜻, 如果 c 是標(biāo)點(diǎn)符號(hào)喇潘,返回true爽撒。
4、編寫(xiě)一個(gè)學(xué)生類响蓉,成員變量有 生日(生日類需要另外定義)學(xué)號(hào) 姓名 數(shù)學(xué) 英語(yǔ) 語(yǔ)文三科的成績(jī)
計(jì)算總成績(jī)和輸出學(xué)生信息
要求自定義無(wú)參數(shù)和有參數(shù)的構(gòu)造函數(shù)和析構(gòu)函數(shù)
string in;
cin >> in;//hello,nihao
string out;
for(int i=0;i<in.length();i++){
if(!ispunct(in[i])){
out+=in[i];
}
}
cout<<out<<endl;
5、匿名(臨時(shí))對(duì)象問(wèn)題(結(jié)合如下拷貝函數(shù)理解)
拷貝構(gòu)造函數(shù)
概念:
調(diào)用時(shí)機(jī)1:test t2=t1;//test t2(t1); 不同于賦值t2=t1;
調(diào)用時(shí)機(jī)2:實(shí)參初始化形參
調(diào)用時(shí)機(jī)3:Test b;b=func();//調(diào)用拷貝
Test b=func();
Animal func1(){
Animal animal;
return animal;//返回一個(gè)臨時(shí)的對(duì)象哨毁,調(diào)用拷貝構(gòu)造函數(shù)
}
void display(){
Animal ani;
ani=func1();//將臨時(shí)對(duì)象賦值給ani枫甲,并析構(gòu)臨時(shí)對(duì)象。
}
運(yùn)行結(jié)果:
Animal func1(){
Animal animal;
return animal;//返回一個(gè)臨時(shí)的對(duì)象扼褪,調(diào)用拷貝構(gòu)造函數(shù)
}
void display(){
Animal ani=func1();//將臨時(shí)對(duì)象傳遞給了ani,其實(shí)就是轉(zhuǎn)正了想幻,不析構(gòu)臨時(shí)對(duì)象
}
運(yùn)行結(jié)果:
構(gòu)造函數(shù)的調(diào)用規(guī)則
如果顯示定義了構(gòu)造函數(shù),系統(tǒng)就不會(huì)提供默認(rèn)的了
需要注意话浇,顯示定義了有參數(shù)的構(gòu)造函數(shù)脏毯,最好同時(shí)定義無(wú)參數(shù)的構(gòu)造函數(shù),否則不能調(diào)用無(wú)參數(shù)構(gòu)造函數(shù)聲明對(duì)象幔崖。
深拷貝和淺拷貝
請(qǐng)參照課件食店。
產(chǎn)生原因?解決方案赏寇?
練習(xí):用c++實(shí)現(xiàn)單鏈表逆置吉嫩。