一、函式過載的概念
1、同名函式,引數不同(包括型別、順序不同)
2、全域性函式和類的成員函式同名不算過載,因為函式的作用域不同(全域性函式被調時應加「::」標誌)
二、成員函式的過載、覆蓋與隱藏
1、成員函式被過載的特徵:
a、相同的範圍(在同乙個類中)
b、函式名字相同
c、引數不同
d、virtual關鍵字可有可無
2、覆蓋是指派生類函式覆蓋基類函式,特徵是:
a、不同的範圍(分別位於派生類和基類)
b、函式名字相同
c、引數相同
d、基類函式必須有virtual關鍵字
3、如果派生類的函式與基類的函式同名,但引數不同,此時無論有無virtual關鍵字,基類的函式將被隱藏
如果派生類的函式與基類的函式同名,並且引數也相同,但是基類函式沒有virtual關鍵字。此時,基類的函式將被隱藏
注:下面這個**是自己總結的,僅供參考:
三、引數的預設值
1、引數預設值只能出現在函式的宣告中,而不能出現在定義體中
(有宣告的時候最好寫在宣告中,宣告和定義只能寫乙個,沒有宣告只可以寫在定義中)
2、如果函式有多個引數,引數只能從後向前挨個兒預設
四、運算子過載
1、用關鍵字operator加上運算子來表示函式
2、普通函式與運算子的區別:普通函式的引數出現在括號內,而運算子,則出現在左右兩側
3、若被過載為全域性函式則有乙個引數的運算子叫做一元運算子,有兩個引數的叫做二元運算子
若被過載為類的成員函式,一元運算子沒有引數,二元運算子有乙個引數。
5、不能改變c++內部資料型別(如int,float等)的運算子
不能過載 『.』 ,因為 『.』 在類中對任何成員都有意義,已經成為標準用法
不能過載目前c++運算子集合中沒有的符號,如&、#、@等
不能改變優先順序規則
五、函式內聯
1、編譯器在符號表中放入函式的宣告(包括名字,引數型別,返回值型別),如果沒有發現內聯函式存在錯誤,那麼該函式的**也被放入符號表裡。
2、在呼叫乙個內聯函式的時候,編譯器會首先檢查呼叫是否正確,進行型別安全檢查,或者自動型別轉換,如果正確,內聯函式的**就會直接替換函式呼叫
3、關鍵字inline必須與函式定義體放在一起才能使函式成為內聯,僅將inline放在函式宣告前不起任何作用。
4、定義在類宣告之中的成員函式將自動成為內聯函式。
5、內聯函式是以**膨脹為代價,僅僅省去了函式呼叫的開銷,從而提高函式的執行效率
6、以下情況不宜使用內聯函式:
a、如果函式體內的**比較長
b、如果函式體內出現迴圈
第 8 章 C 函式的高階特性索引
對比於c 語言的函式,c 增加了過載 overloaded 內聯 inline const 和virtual四種新機制。其中過載和內聯機制既可用於全域性函式也可用於類的成員函式,const 與 virtual 機制僅用於類的成員函式。過載和內聯肯定有其好處才會被c 語言採納,但是不可以當成免費的午餐...
第8章 函式
位置實參,關鍵字是參 預設值,注意順序,把已經有預設值的放在最後 topping這個可以接收任何實參,一般放形參最後,它是個空元組,當作列表一樣就行 def pet name,size 27 預設值 print name size n input please get me a name s inp...
第8章 函式
定義函式,注意書寫格式 向函式傳遞資訊 實參和形參 傳遞實參 位置實參,注意順序 關鍵字實參,名稱和值對應,寫在函式裡,務必準確指定函式定義的形參名 預設值混合使用時,注意格式,讓實參變成可選的,新增預設值,並且放在形參列表最後 切片法 建立列表副本 星號建立空元組,傳遞任意數量的實參 結合使用位置...