私はいくつかのクラスで書いた関数を持っています。Square square; という名前のオブジェクトを作成するときの理由がわかりません。関数を終了するときに Square の d'tor が呼び出されています。オブジェクトを次のように作成するとき: Square* square = new Square(); d'tor は呼び出されていません。
クラスには継承がまったくありません。
2 つのバージョンの関数の例を次に示します。
//=======Enter to d'tor in the end of the function to ~Square==========
void DrawShapesApp::addSquare()
{
int row, col;
int edge;
char ch;
Square square;
getSquareInfo(row, col, edge, ch);
square.setAll(row, col, edge, ch);
m_squares.push_back(&square);
}
//=======Doesn't enter to d'tor in the end of the function==========
void DrawShapesApp::addSquare()
{
int row, col;
int edge;
char ch;
Square* square = new Square();
getSquareInfo(row, col, edge, ch);
(*square).setAll(row, col, edge, ch);
m_squares.push_back(&square);
}