複数の仮想デストラクタについて、特に考え直しました。http://blogs.msdn.com/b/oldnewthing/archive/2004/05/07/127826.aspxを読んだ後。
私が持っているとしましょう
class Base
{
public:
Base();
virtual ~Base();
private:
Logger* _logger;
};
//and
class Derived : public Base{
public:
Derived();
virtual ~Derived();
private:
Logger* _logger;
};
cppファイルで、各デストラクタでそれぞれの_logger
ポインタを削除しています
Base::~Base(){ //base.cpp
delete _logger;
}
Derived::~Derived(){ //derived.cpp
delete _logger;
}
これは意図したとおりに機能し、メモリ リークは発生しませんか?