2015年9月3日木曜日

【C++の勉強(4)】参照呼出しと参照パラメータと、関数テンプレート

C++の勉強4回目です。

1、参照呼出しと参照パラメータ
 関数に値を送る場合の
・値渡し
・参照渡し
・ポインタ渡し

の違いについて理解しましょう。

参照パラメータは対応する引数のエイリアス(別名)といいます。
使い方は、関数の引数で次のようにします。
    void setValue(double p);       // 値渡し
    void setValue(double &p);   // 参照渡し
    void setValue(double *p);   // ポインタ渡し

実際に、値渡しと参照しで行ってみます。

main()
{
   int x=2, z=4;
   printf( "x = %d",  sequareByValue(x) );
   printf( "z = %d",  sequareByReference(z) );}

int sequareByValue(int a)
{
  return a *= a ;   // 呼び出し側の引数は変更されない
}


int sequareByReference(int &a)
{
  return a *= a ;   // 呼び出し側の引数は変更される
}

----------- 出力 -------------------------------
x = 4
x = 2
z = 16
z = 16
------------------------------------------
参照渡しの場合は、値が変更されていることが確認できました。

2、 関数テンプレート
プログラムでは、内部処理は同じだがデータ型が異なる関数が頻繁に出てきます。
その時に、テンプレートを使うと便利です。

template <class X>
void myfunc(X data)
{
 cout << data * 2 << '\n';
}
 
myfunc(10);
myfunc(1.052); 

----------- 出力 -------------------------------
20
2.104
------------------------------------------

テンプレートについては、参考URLを一読をすると、もっと詳しくかいてありますので、理解できると
思います。

【参考URL】
http://homepage2.nifty.com/well/Template.html

0 件のコメント:

コメントを投稿