1週目:インライン関数、関数のオーバーロード、関数のデフォルトパラメーター

インライン関数

  • 関数呼び出しには時間のオーバーヘッドがあり、関数を呼び出すときに、funcをスタックに置き、終了後にスタックを離れるには、いくつかの指示が必要です。関数の文数が少なく実行が速い場合、関数が何度も呼び出され、オーバーヘッドが非常に大きくなります。
  • 関数呼び出しのオーバーヘッドを削減するために、インライン関数メカニズムが導入されています。インライン関数の呼び出しの処理とは、関数呼び出しステートメントを生成せずにコード全体を呼び出しステートメントに挿入することです。
  • 欠点:プログラム量の増加

定義:inline int max()キーワードをインラインで追加

関数のオーバーロード

  • 同じ名前で異なるパラメーターが関数のオーバーロードです
  • 関数のオーバーロードにより、関数の命名が容易になります
  • コンパイラーは、実際のパラメーターの数とタイプに基づいて、使用する関数を決定します
void Max(double a,double b);
void Max(int a,int b);
void Max(double a,double b,double c);
int main()
{
	int a=10,b=11;
	double r1=5.2,r2=6.3,r3=9.1;
	Max(a,b);
	Max(r1,r2);
	Max(r1,r2,r3);
}

void Max(int a,int b)
{
	cout<<"invoking max 1...\n";
	if(a>b)
		cout<<"Max is "<<a<<endl;
	else
		cout<<"Max is "<<b<<endl; 
}

void Max(double a,double b)
{
		cout<<"invoking max 2...\n";
	if(a>b)
		cout<<"Max is "<<a<<endl;
	else
		cout<<"Max is "<<b<<endl;
}

void Max(double a,double b,double c)
{
		cout<<"invoking max 1...\n";
	if(a>b&&a>c)
		cout<<"Max is "<<a<<endl;
	else if(b>a&&b>c) 
		cout<<"Max is "<<b<<endl;
	else
		cout<<"Max is "<<c<<endl;
}

出力結果:ここに画像の説明を挿入

PS。max関数は、iostreamライブラリの関数と競合するため、ここで名前を付けることはできませんか?

関数のデフォルトパラメータ

パラメータを定義する場合、右端のいくつかの連続するパラメータにはデフォルト値があります

void func(int x1, int x2=2, int x3=3);
func(10); //equal to func(10,2,3)
func(10,8); // equal to func(10,8,3)
func(10,8,9); // equal to func(10,8,9)
func(10, ,9) ; //error 
  • 関数のデフォルトの目的は、プログラムのスケーラビリティを向上させることです
  • 作成された関数が新しいパラメーターを追加する必要があり、元の呼び出し関数が新しいパラメーターを使用しない場合は、それらの関数呼び出しステートメントを変更せずに、新しいパラメーターを使用できます。

おすすめ

転載: blog.csdn.net/ZmJ6666/article/details/108548431