Итак, я написал код, чтобы опробовать умные указатели, которые поставляются с библиотекой c ++ std.Для этого я создал тестовый класс MyClass
, который генерирует консольный вывод при уничтожении.Мой код выглядит так:
std::unique_ptr<MyClass> getMyClassPtr(int a = 0, char b = 'a', double c = 1.1)
{
std::unique_ptr<MyClass> ptr = std::make_unique<MyClass>(MyClass(a, b, c));
return ptr;
}
int main()
{
std::unique_ptr<MyClass> pMyClass = getMyClassPtr();
if (pMyClass)
std::cout << "MyClass Values:\na = " << pMyClass->getA() << "\nb = "
<< pMyClass->getB() << "\nc = " << pMyClass->getC() << "\n";
}
Теперь я натыкаюсь на то, что деструктор MyClass
вызывается в конце main
, но также в конце getMyClassPtr()
теперь пустой указатель.
Какой объект здесь уничтожается?
Мне просто странно, что деструктор объекта вызывается, но на самом деле не исчезает.Копируемый объект?