C++重載與內聯方法

重載三種狀況安全

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++編譯器也會予以忽略,並且大的內聯方法很容易形成代碼膨脹。變量

相關文章
相關標籤/搜索