Posted on 2012-12-16 14:52
鑫龍 閱讀(622)
評論(0) 編輯 收藏 引用 所屬分類:
c++
習慣了這樣寫,但有時候會反問下自己為什么要const和&?
1.為什么要&?
答:&是必須的。
如果它不是引用,在傳遞參數(shù)時,會產(chǎn)生一個局部變量做參數(shù),而這個局部變量的構(gòu)造又要調(diào)copy構(gòu)造函數(shù)一次,....那就子子孫孫無窮匱了....
但如果是引用,在傳遞參數(shù)時候,局部變量只需要綁定原變量,而不需要再一次調(diào)用copy構(gòu)造函數(shù)。
2.為什么要const?
答:const不是必須的。
構(gòu)造函數(shù)是用引用方式傳遞復制對象,引用方式傳遞的是地址,因此在構(gòu)造函數(shù)內(nèi)對該引用的修改會影響源對象。而你在用對象a1構(gòu)造a2時,自然不希望復制構(gòu)造函數(shù)會改變a1的內(nèi)容,因此要防止復制構(gòu)造函數(shù)內(nèi)部修改該引用,所以一般用const聲明。加不加const還是需要看copy構(gòu)造的行為,比如std::auto_ptr的構(gòu)造函數(shù),就沒有const,因為它要獲得原有對象指針的擁有權。