#include<iostream>
using namespace std;
class Monster {
public:
Monster() {cout << "with out argument. \n";}
Monster(int sz) { cout << "Monster created.\n"; }
~Monster() { cout << "Monster destroyed.\n"; }
int GetSize() { return itsSize; }
void SetSize(int str) { itsSize = str; }
private:
int itsSize;
};
int main()
{
Monster *m;
m =new Monster[3];
for(int i = 0; i < 3; i++)
m[i] = i; // constructor with argument is getting called for each elements after which why destructor is getting called for each element.
delete []m;
return 0;
}
Output:
with out argument.
with out argument.
with out argument.
Monster created. // Monster constructor with argument is getting called.
Monster destroyed. // 1. Why this destructor is getting called after each call of constructor.
Monster created.
Monster destroyed. //2.
Monster created.
Monster destroyed. //3.
Monster destroyed.
Monster destroyed.
Monster destroyed.
當我初始化具有值的怪物對象數組時,參數化構造函數被調用,之後立即爲什麼析構函數被調用?如何調用破壞函數?
您應該註釋副本並移動構造函數(和賦值)以獲得更清晰的圖像。他們會讓你更好地瞭解臨時代碼等等。 – Niall
'm [i] = i;'你將整數存入指針數組中,這真的是你想要的嗎? –
下面是一個「嘈雜」怪物的例子... http://coliru.stacked-crooked.com/a/b8456e3bec85d185 – Niall