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