考虑以下代码:
#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
其成员函数中的状态。
我的问题:
- 这样做是否被认为是好的做法?
- 有什么优点/缺点?
- 有什么替代方案?