Имеется класс:
MyClass::MyClass()
{
printf("MyClass::MyClass()\n");
}
MyClass::~MyClass()
{
printf("MyClass::~MyClass()\n");
}
MyClass::MyClass(const MyClass &obj)
{
printf("MyClass::MyClass(const MyClass &obj)\n");
sName = obj.sName;
}
MyClass MyClass::operator =(const MyClass &obj)
{
printf("MyClass MyClass::operator =(const MyClass &obj)\n");
sName = obj.sName;
return *this;
}
Код в главной функции
CArray <MyClass,MyClass&> arrayMyClasses;
cout << "1" << endl;
MyClass obj;
cout << "2" << endl;
obj.sName = "Name";
cout << "3" << endl;
arrayMyClasses.Add(obj);
cout << "4" << endl;
И вот такой странный результат на консоли:
1
MyClass::MyClass()
2
3
MyClass::MyClass()
MyClass MyClass::operator =(const MyClass &obj)
MyClass::MyClass(const MyClass &obj)
MyClass::~MyClass()
4
MyClass::~MyClass()
MyClass::~MyClass()
Почему деструктор вызывается трижды?