重載三種狀況安全
1.參數個數不一樣函數
2.參數類型不一樣code
3.有無constget
class test { public: int getNum(int i); double getNum(double d);//若是不想使用該重載函數,則能夠顯示刪除double類型的重載函數 bool getNum(double x, double y);//變量類型和變量個數均不相同 int getNum(int i)const;//const方法重載 inline double setNum(double x);//內聯函數 int setNum(int x){mx=x;}//另外一種內聯函數的實現方式,即直接將代碼放在類的定義中去。 private: int mx; };
內聯方法編譯器
1.方法實現的最前面加上關鍵字inline。io
2.將函數實現代碼直接放入成員函數聲明的地方。編譯
注意:class
1.內聯比#define宏更加安全,由於#define有時候可能會出現意想不到的狀況。如:test
#include <stdio.h> #include <stdlib.h> #define T(a,b) a+b void main() { int x = 2, y = 3, z = 4; printf("%d", T(x, y)*z);//運行結果爲14,那是由於執行的是x+y*z,並非(x+y)*z getchar(); }
2.知足內聯函數的條件是代碼足夠簡單,即使用戶沒有顯示聲明較小的函數爲inline,但高級C++編譯器會自動把該函數當成內聯函數來處理,若函數代碼龐大,即使用戶顯示聲明該函數爲inline,C++編譯器也會予以忽略,並且大的內聯方法很容易形成代碼膨脹。變量