重载和const形参
生活随笔
收集整理的這篇文章主要介紹了
重载和const形参
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
頂層const不影響傳入函數的對象。一個擁有頂層const的形參無法和一個沒有頂層const的形參區分開來:
Record lookup(Phone);Record lookup(const Phone); //重復聲明了Record lookup(Phone)Record lookup(Phone*);Record lookup(Phone* const); //重復聲明了Record lookup(Phone*)在這兩組函數聲明中,每一組的第二個聲明和第一個聲明是等價的。
另一方面,如果形參是某種類型的指針或引用,則通過區分其指向的是常量還是非常量對象可以實現函數重載,此時的const是底層的:
//對于接受引用或指針的函數來說,對象是常量還是非常量對應的形參不同//定義了4個獨立的函數Record lookup(Account&); //函數作用于Account的引用Record lookup(const Account&); //新函數,作用于常量引用Record lookup(Account*); //新函數,作用于指向Account的指針Record lookup(const Account*); //新函數,作用于指向常量的指針在上面的例子中,編譯器可以通過實參是否是常量來推斷應該調用哪個函數。因為const不能轉換成其它類型,所以我們只能把const對象(或指向const的指針)傳遞給const形參。相反的,因為非常量可以轉換成const,所以上面的4個函數都能作用于非常亮對象或者指向指向非常量對象的指針。不過,當我們傳遞一個非常量對象或者指向非常量對象的指針時,編譯器會優先使用非常量版本的函數。
總結
以上是生活随笔為你收集整理的重载和const形参的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: tar/gzip/zip文件打包、压缩命
- 下一篇: 范围for语句的整理