const参照パラメータに値を渡す?
質問
ここで似たような質問を見つけることができませんでした。しかし、私はこのようなコードを使っています:
Foo * foo = new Foo();
add(*foo); //Couldnt find any similar questions on this syntax?
void add(const Foo & foo){
//What exactly is foo here? How can i manipulate its members, foo. or foo-> ?
}
. 解決
foo
メソッド内の変数add
は定数基準です。オブジェクトをコピーしないという意味でポインタのように動作します。オブジェクト自体のようにそれと対話します。ポインタとは異なり、参照はNULL
にすることはできず、再割り当てされることはできません。.
演算子の代わりにDOT ->
オペレータを使用してそれと対話します。
void add(const Foo & foo){
cout << foo.first_member << endl;
foo.const_member_function();
}
.
foo
は定数参照であるため、foo
のメンバーを読むことができますが、割り当てることはできません。また、foo
リファレンスのメンバー関数の呼び出しは、const
を明示的にマークした関数に制限されています。
add
がfoo
ではない限り、参照されているfoo
を使用してNULL
を呼び出すことはOKです。NULL
ポインタを参照して参照することは未定義の動作です。
他のヒント
'foo' is a constant reference. You can access its members via foo.fred, foo.method(), etc., but you can't change any data members or call any non-const methods.
所属していません StackOverflow