2017-02-03 4 views
0

メソッド呼び出しの中でパラメータconst参照を作成できますか? 私はそれがコンパイルされていることを知っていますが、実行時に正しいことを完全には確信していません。オブジェクトをconst参照として渡しながらビルドするC++

class A{ 
public: 
void doThings(const B& b); 
} 

class B{ 
    B(int i, int j); 

} 


int main{ 

    A a; 

    a.doThings(B(1,2)); //Is this OK? 

} 
+1

何が間違っていると思いますか? –

+0

あなたのコードは間違いなくコンパイルされません。 –

+1

はい、メソッド/関数内の一時オブジェクトへのconst参照を使用できますが、ポインタを格納したり別のスレッドで使用することはできません。コンパイラはそれに対してあなたを保護しません。 – gabry

答えて

2

概念は大丈夫です...一時的Bを構築し、参照渡しされます。

は、私は以下のクラスを持っています。その参照をAに保存したり、doThingsの範囲を超えて使用しないでください。

しかし、あなたのコードは良くありません。ここでは、私はあなたのためにそれを修正しました:

class B; 

class A { 
public: 
    void doThings(const B& b) {} 
}; 

class B { 
public: 
    B(int i, int j) {} 
}; 


int main() { 

    A a; 

    a.doThings(B(1, 2)); //Is this OK? 

} 
関連する問題