現(xiàn)在科技發(fā)達了,能克隆綿羊了。也許,有一天,我們能克隆人類……
int main()
{
person xiaoming(“1985/1/1”,“male”);
person xiaoxiaoming(xiaoming);
}
不過現(xiàn)在還不行,因為科技不發(fā)達。那怎么辦那?
研究,再研究;思考,再思考。c++的創(chuàng)始人終于想到了——復(fù)制(拷貝)構(gòu)造函數(shù)!(這時還沒有克隆,看來計算機總是走在時代前列的!)
person(person & p)
{
birthday = p.birthday;
strcpy(sex,p.sex);
}
這也是重載的列子!特別的重載!這就是穿說中的復(fù)制構(gòu)造函數(shù)!把它加進類里,我們就能在main函數(shù)克隆人了!
不過還有個問題,那就是&,這個是......?
難道是傳說中的引用?yes,就是它!
干什么用的?別問我,自己看書。
我只能說,這個東西很有用的,這絕對是c++的一大發(fā)明!
這里又是干什么用的?
……
我們知道,當(dāng)調(diào)用函數(shù)時,形參是從新建立的,這樣會耗費一定時間,降低效率;但加上了&,情況就不同了,這樣效率會高點。
但是,加了&會不會改變實參的值哪?當(dāng)然有可能了!
所以當(dāng)我們不想改變參數(shù)的值時,可以在前面加上const,這樣的話,當(dāng)你想改變實參值時,編譯器就會報錯,免去你修改邏輯錯誤的麻煩:
person(const person & p){……}
當(dāng)然,一般在構(gòu)造函數(shù)中,你不會改變對象的值(想做的話沒問題,我只能說你是瘋子),所以不加const沒問題,不過既然老師要求嗎,大家還是寫好了。
但請注意,構(gòu)造函數(shù)中參數(shù)的&是一定要加的!那我不加哪?我不說,你自己試試吧。
順便說一下,“&”還是不要讀作“and”為好,“and”應(yīng)該是“&&”才對!
“&”在c++中是有三種意思的:
1.運算符:與;
2.取地址符;
3.引用(reference)
加在參數(shù)里,那一定是引用,讀作“reference”,而不是“and”!
順便說一下,const,&這些東西比較零散,但很有用,c++是一點一點發(fā)展到今天的,這些都難以避免,這也是c++比Java難學(xué)的地方。
相關(guān)推薦:全國計算機等級考試二級:C++指針基礎(chǔ)入門北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |