単純すぎると思われる質問がありますが、とにかく答えを理解したいと思います。
以下のコード例。
#include <QtCore/QCoreApplication>
#include "parent.h"
#include "childa.h"
#include "childb.h"
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
Parent one;
ChildA two;
ChildB three;
return a.exec();
}
#ifndef CHILDA_H
#define CHILDA_H
#include <iostream>
#include "parent.h"
using namespace std;
class ChildA : public Parent
{
public:
ChildA();
~ChildA();
};
#endif // CHILDA_H
#ifndef CHILDB_H
#define CHILDB_H
#include <iostream>
#include "parent.h"
using namespace std;
class ChildB : public Parent
{
public:
ChildB();
~ChildB();
};
#endif // CHILDB_H
#ifndef PARENT_H
#define PARENT_H
#include <iostream>
using namespace std;
class Parent
{
public:
Parent();
virtual ~Parent();
};
#endif // PARENT_H
#include "childa.h"
ChildA::ChildA()
{
cout << "in Child A const\n";
}
ChildA::~ChildA()
{
cout << "in Child A destructor\n";
}
#include "childb.h"
ChildB::ChildB()
{
cout << "in Child B const\n";
}
ChildB::~ChildB()
{
cout << "in Child B destructor\n";
}
#include "parent.h"
Parent::Parent()
{
cout << "in Parent const\n";
}
Parent::~Parent()
{
cout << "in Parent destructor\n";
}
デストラクタが呼び出されていないのはなぜですか?
オブジェクト変数はメインのスコープ外に出て、デストラクタを呼び出す必要がありますよね?