空のデストラクタは何も実行せず、それを呼び出してもオブジェクトは削除されないと聞きました。しかし、コードでは:
#include <iostream>
#include <set>
class a
{
public:
~a()
{}
std::set <int> myset;
};
int main()
{
a object;
object.myset.insert(55);
object.~a();
object.myset.insert(20);
std::cout << object.myset.size();
}
「*glibcが検出されました* /.app:doublefree orcorruption(fasttop):」そして「ABORT」が表示されます。
重要な場合は、c++11フラグを有効にします。では、空のコンストラクターは実際に何をするのでしょうか?それは何かをします、そして私はそれを読みません。