次のコードを検討してください。
#include <iostream>
struct B {
void bar() {
std::cout << "I feel used\n";
}
};
struct A {
B& b;
A(B& b_) : b(b_) {} // take and keep a reference to the object passed in
void foo() {
b.bar(); // potentially change the state of b
}
};
int main() {
B b;
A a(b);
a.foo();
}
のコンストラクターはパラメーターとしてA
への参照を取り、参照を通じてそのメンバー関数での状態を変更します。b
A
b
私の質問:
- そうすることは良い習慣と考えられますか?
- 長所/短所は何ですか?
- 代替案は何ですか?