C言語から入っているので特にポインタを使うことに抵抗がなく、逆に参照を使うことに抵抗がある。しかし、C++では参照で済むのであれば参照を使えということらしい。
例えば、下記のコードだと、ChangeMonths()はよいが、func_add_use_pointer()は、よろしくないとうことになる…のかな、たぶん。
#include/** * 加算を行う関数(参照を使用) */ void func_add_use_ref(int a, int b, int& ref) { ref = a + b; } /** * 加算を行う関数(ポインターを使用) */ void func_add_use_pointer(int a, int b, int* pointer) { *pointer = a + b; } /** * 月を逆に並べる(ポインターで渡す)。 */ void ChangeMonths(int* pMonths) { for (int i = 12; i > 0 ; i--){ *pMonths = i; pMonths++; } } /** * サンプルコード */ void main(void) { int sum; // 加算結果 // 参照を使用した場合 func_add_use_ref(1, 1, sum); printf("加算結果(参照を使用):%d\n", sum); // ポインターを使用した場合 func_add_use_pointer(1, 1, &sum); printf("加算結果(ポインターを使用):%d\n", sum); int months[12] = {1,2,3,4,5,6,7,8,9,10,11,12}; // 1年 int* pMonths = months; // ポインターしか使用できない場合 ChangeMonths(months); printf("月の並べ替え結果:\n"); for(int i = 0; i < 12; i++){ printf("%d\n", months[i]); } }
上記コードの実行結果
加算結果(参照を使用):2 加算結果(ポインターを使用):2 月の並べ替え結果: 12 11 10 9 8 7 6 5 4 3 2 1