LotosLabo

プログラミング技術とか気になった情報を載せていきます

C++について3

関数

戻り値の型 関数名(引数リスト)
{
文;

return 式;
}


例:

void buy()
{
cout << "車を買いました\n";
}


呼び出し

関数名(引数リスト);


上の例で答えると

buy();


例:

void test()
{
 cout << "私は大学生です\n";
}

int main()
{
 test();
  
return 0;
}



出力結果:

私は大学生です。


また、関数はなんどでも呼び出すことができるので、複数置いても構いません。

引数


void buy(int x)
{
cout << x << "万円の車を買いました\n";
}

int型の引数を用意し、引数を関数内で使用する。

例:

void buy(int x)
{
 cout << "私は" << x << "歳の大学生です\n";

}

int main()
{
 buy(21);
 
 return 0;
}



出力結果:

私は21歳の大学生です。



関数の定義内で値を受け取る変数を、仮引数といい、関数を呼び出す際に渡す値を、実引数という。


複数の引数>


void buy(int x, int y)

という形もできる。


戻り値


関数の呼び出し元に、関数本体から特定の情報を返す

int test(int x, int y)
{
 int z;
 
 cout << x << "万円と" << y << "万円の車を買いました\n";
 
 z = x + y;
 
 return z;
}


int main()
{

int  a, b ,c;

a = 30;
b = 50;

c = test(a,b);

cout << "合計で" << c << "万円です\n";

return 0;
}



出力結果:

30万円と50万円の車を買いました。
合計で80万円です。


インライン関数


例:


元のmax関数

int max(int x, int y)
{
 if (x > y)
  return x;
 else
  return y;
 }





これがインライン関数では

// max関数の定義
inline int max(int x, int y){if(x>y) return x; else return y;}

int main()
{
 int num1,num2,ans;
 
 cout << "1番目の整数を入力してください\n";
 cin >> num1;
 
 cout << "2番目の整数を入力してください\n";
 cin >> num2;
 
 and = max(num1,num2);
 
 cout << "最大値は" << ans << "です\n";
 
 return 0;
}



プログラミングの処理速度が向上する。


関数プロトタイプ宣言

関数の名前と引数の数をコンパイラに知らせておく。関数の呼び出しを関数の定義よりも前に記述するには関数プロトタイプ宣言が必要である。

戻り値の型 関数名(引数リスト);


例:

int max(int x, int y);

int main()
{
 int num1, num2,ans;
 
 cout << "1番目の整数を入力してください\n";
 cin >> num1;
 
 cout << "2番目の整数を入力してください\n";
 cin >> num2;
 
 ans = max(num1,num2);
 
 cout << "最大値は" << ans << "です。\n";
 
 return 0;
}

int max(int x, int y)
{
 if (x > y)
   return x;
  else
   return y;
  }





関数プロトタイプ宣言をすることで、関数の定義を後に書くことが可能になる。

デフォルト引数


関数を呼び出す際に実引数を省略することが出来ます。
実引数を省略すと指定しておいたデフォルト値が関数に渡される。


戻り値の型名 関数名(型名 仮引数名=デフォルト値, ・・・);


例:

void buy(int x = 10);
 
int main()
{
cout << "1回目は100万円で購入します\n";
buy(100);
  
cout << "2回目はデフォルト金額で購入します\n";
buy();
  
return 0;
}
  
  
void buy(int x)
{
  
cout << x << "万円の車を買いました\n";
}




引数を使用しない場合はデフォルト値が使われる。


関数のオーバーロード


引数の型や数が異なっていれば、同じ名前を持つ関数を複数定義できる。

int max(int x, int y)
double max(double x, double y)

例:

int max(int x, int y);
double max(double x, double y);
   
int main()
{
   
int a, b;
double c, d;
 
cout << "2つの整数を入力してください\n";
cin >> a >> b;
   
cout << "2つの小数を入力してください\n";
cin >> c >> d;
   
int ans1 = max(a,b);
couble ans2 = mas(c,d);
   
cout << "整数値の最大値は" << ans1 << "です\n";
cout << "小数値の最大値は" << ans2 << "です\n";
   
return 0;
}
  
int max(int x, int y)
{
if (x > y)
return x;
else 
retrun y;
]
  
double max(double x, double y)
{ 
if (x > y)
return x;
else 
return y;
}



関数のテンプレート


関数のひながたを用意できる。
このひながたを関数テンプレートという。


[手順]

①関数テンプレートを宣言・定義する
②関数を呼び出す(関数が自動的に生成される)



関数テンプレートを定義


template

関数の宣言または定義

ここでは「T」という仮の型名を使っていきます。

例:

template <class T>
T maxt(T x, T y)
{
if(x > y)
return x;
else
return y;
}



このようにすることで先ほどの

int max(int x, int y)
{
if (x > y)
return x;
else 
retrun y;
}
  
double max(double x, double y)
{ 
if (x > y)
return x;
else 
return y;
}

の処理を一つにまとめることが可能となった。