A класс A
определен и реализован. Позже он объявлен как struct как аргумент шаблона для std::unique_ptr
. Компилятор (g ++ 10.1) ничего не жалуется на это, и программу можно запустить.
#include <iostream>
#include <string>
#include <memory>
class A
{
public:
std::string info = "Hello World!";
};
int main()
{
std::unique_ptr<struct A> a{new A};
std::cout << a->info << "\n";
return 0;
}
Если я определю a без new A
std::unique_ptr<struct A> a;
Код все еще может быть скомпилированным, но во время выполнения происходит ошибка сегментации. Так почему это возможно?