C++ 使用唯一指针调用函数会使我的程序崩溃

C++ 使用唯一指针调用函数会使我的程序崩溃,c++,c++11,pointers,inheritance,smart-pointers,C++,C++11,Pointers,Inheritance,Smart Pointers,我制作了一个非常简单的程序,尝试将独特的指针和继承融合在一起。但是,它最终以出口代码11而崩溃,我不知道为什么。有人能解释一下坠机的原因吗 //Counter Class, Base class class Counter { public: virtual int addStuff(int& x)=0; }; //主函数使用唯一指针从Stuff类调用addStuff int main(){ int x=12; std::唯一的ptr p; p->addStuff(x

我制作了一个非常简单的程序,尝试将独特的指针和继承融合在一起。但是,它最终以出口代码11而崩溃,我不知道为什么。有人能解释一下坠机的原因吗

//Counter Class, Base class
class Counter {
   public:
    virtual int addStuff(int& x)=0;
  };
//主函数使用唯一指针从Stuff类调用addStuff
int main(){
int x=12;
std::唯一的ptr p;
p->addStuff(x);
}

指针
p
是空的,不指向任何东西

构造一个不拥有任何内容的
std::unique_ptr
。值初始化存储的指针和存储的删除器

在它通向UB的路上,一切皆有可能

如果
get()==nullptr

您应该使
p
指向有效对象,例如

std::unique_ptr<Stuff> p = std::make_unique<Stuff>();
std::unique_ptr p=std::make_unique();

指针
p
是空的,不指向任何东西

构造一个不拥有任何内容的
std::unique_ptr
。值初始化存储的指针和存储的删除器

在它通向UB的路上,一切皆有可能

如果
get()==nullptr

您应该使
p
指向有效对象,例如

std::unique_ptr<Stuff> p = std::make_unique<Stuff>();
std::unique_ptr p=std::make_unique();

在未初始化指针上调用成员函数很容易导致未定义的行为。在未初始化指针上调用成员函数很容易导致未定义的行为。
std::unique_ptr<Stuff> p = std::make_unique<Stuff>();