#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.
Когда я инициализирую объект Array of Monster со значением, вызывается вызываемый параметризованный конструктор, сразу же после чего возникает вызов деструктора?Как называется функция уничтожения?
Вы должны аннотировать копию и переместить конструкторы (и назначения), а также получить более четкое изображение. Они дадут вам лучшее представление о временных и т. Д., Плавающих в коде. – Niall
'm [i] = i;' вы храните целые числа в этом массиве указателей, это действительно то, что вы хотели? –
Вот пример «шумного» «монстра» ... http://coliru.stacked-crooked.com/a/b8456e3bec85d185 – Niall