戻り値のない関数定義の場合、元のパラメーターに影響を与える必要があるため、参照(reference)を使用する必要があります。それ以外の場合、戻り値がないため、結果はMainに適用されません。
これは演習6.13で述べたとおりです。前者は実際のパラメータを変更できませんが、後者は変更できます。
以下は、C ++ Primer Exercise 6.11のトピックです。(クラス:[C ++ Primer(5th Edition)Exercise]演習プログラム-第6章(第6章)演習6.17(b))
ヘッダーファイル:
- Reset.h
#ifndef RESET_H
#define RESET_H
#include <string>
void reset_string(std::string &content);
void reset_char(char &content);
void reset_int(int &content);
void reset_long(long &content);
void reset_double(double &content);
#endif // !RESET_H
ソースファイル:
- Reset_Def.cpp
#include <string>
#include "Reset.h"
void reset_string(std::string &content)
{
content = "";
}
void reset_char(char &content)
{
content = '\0';
}
void reset_int(int &content)
{
content = 0;
}
void reset_long(long &content)
{
content = 0;
}
void reset_double(double &content)
{
content = 0;
}
- Reset_Main.cpp
#include <iostream>
#include <string>
#include "Reset.h"
using namespace std;
int main()
{
int i = 2;
char j = 't';
string k = "teddy";
double l = 3.14;
long t = pow(2, 30);
cout << i << "/" << j << "/" << k << "/" << l << "/" << t << endl;
reset_int(i);
reset_char(j);
reset_string(k);
reset_double(l);
reset_long(t);
cout << i << "/" << j << "/" << k << "/" << l << "/" << t << endl;
return 0;
}
出力:
次の手順職務を遂行する:
- Reset.h:ステートメント関数
- Reset_Def.cpp:定義関数
- Reset_Main.cpp:メインプログラム
こちらもご覧ください
Teddy van Jerryのナビゲーションページ
[メモ]
C ++ での個別コンパイルのアイデア[C ++入門(第5版)演習]演習プログラム-第6章(第6章)
C ++で定義された関数の影響に関する考察