Exceptional C++

【Exceptional C++(22)】对象的生存期(一)

2018-01-30  本文已影响1人  downdemo
void f() {
    T t(1);
    T& rt = t;
    // #1:使用t或rt做一些事
    t.~T();
    new (&t) T(2);
    // #2:使用t或rt做一些事
} // t被再次销毁
void T::f(int i) {
    this->~T();
    new (this) T(i);
}
// 现在可以说这已经不安全了,考虑下面代码
class U : /*...*/ public T { ... };
void f() {
    A t(1);
    B& rt = t;
    // #1:使用t或rt做一些事
    t.f(2);
    // #2:使用t或rt做一些事
} // t被再次销毁
上一篇下一篇

猜你喜欢

热点阅读