質問

ここで似たような質問を見つけることができませんでした。しかし、私はこのようなコードを使っています:

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を明示的にマークした関数に制限されています。

addfooではない限り、参照されている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.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top