た(const方法で)これらの違いは何ですか:のConst宣言
const int getNum(int &a, int &b) const;
const int getNum(int &a, int &b);
int getNum(int &a, int &b) const;
ありがとうございました!
た(const方法で)これらの違いは何ですか:のConst宣言
const int getNum(int &a, int &b) const;
const int getNum(int &a, int &b);
int getNum(int &a, int &b) const;
ありがとうございました!
これらはメンバー関数の宣言であり、おそらく正規関数ではありません。
const int getNum(int &a, int &b) const;
最も左のconst
は、この関数から返されるintが定数であることを意味します。これは比較的意味のない区別です。intは定数ですが、使用する前に暗黙のうちにそのコピーを作成します。このはがクラス戻り値の型に影響を及ぼしますが、それでも特に有用ではありません。
右端のconst
は、メンバ関数が定数オブジェクトで呼び出され、その関数がそのオブジェクトを変更できないことを意味します。効果的には、関数内のポインターは一定になります。
const int getNum(int &a, int &b);
ここconst
は、最初の例 - 戻り値の左端のconst
が一定であるのと同じ意味を持ちます。
int getNum(int &a, int &b) const;
const
がここで最初の右端const
と同じ意味を有する例を、暗黙this
ポインタは一定です。
const int swap(int &a, int &b);
可変値不変値を
int swap(int &a, int &b) const;
リターンを返し、それ内部に一つの変数は、実行時に変更することはできません。
const int swap(int &a, int &b) const;
両
は、第1および第3のは、彼らがconst
インスタンス上で呼び出すことができることを意味し、const
メンバ関数であり、インスタンスのフィールドのいずれかを変更しないでください。
戻り値のタイプはconst int
ですが、それはあまり有用ではありません。一時的な値を返すので、その値はconst
になりません。
3つすべてが間違っています:スワップは 'void'を返します。 – Sjoerd
が変更されました。その単なる例です。 、なぜダウングレードですか? – Itzik984
非常にいい質問 – mikithskegg