1. ホーム
  2. c++

[解決済み] constリファレンスとノーマルパラメータの差分

2022-03-03 10:57:04

質問

void DoWork(int n);
void DoWork(const int &n);

何が違うの?

どのように解決するのですか?

大きな構造体やクラスを渡す場合は、その差が顕著になります。

struct MyData {
    int a,b,c,d,e,f,g,h;
    long array[1234];
};
void DoWork(MyData md);
void DoWork(const MyData& md);

通常のパラメータを使用する場合、パラメータを値で渡しますので、渡したパラメータのコピーが作成されます。const referenceを使う場合は、参照で渡すので、元のデータはコピーされません。

どちらの場合も、関数の内部から元のデータを変更することはできません。


EDITです。
で指摘されているように、場合によっては元データを修正される可能性があります。 チャールズ・ベイリー で、彼の 回答 .