CPP
引用的对象必须比被引用的对象活的时间长
#include <iostream>
using namespace::std;
class B {
public:
int a, b, c;
B() {
a = 1, b = 1, c = 1;
}
~B() {
cout << "Release B" << endl;
}
};
class A {
public:
B* b;
void add(B* b) {
this->b = b;
}
~A() {
b->a = 2, b->c = 3, b->b = 9;
cout << "Release A" << endl;
}
};
int main() {
unique_ptr<A> a;
B b;
a->add(&b);
cout << b.a << b.b << b.c << endl;
}
由于b的生命周期是a的子集,所以会报错。