C++ 使用唯一指针调用函数会使我的程序崩溃
我制作了一个非常简单的程序,尝试将独特的指针和继承融合在一起。但是,它最终以出口代码11而崩溃,我不知道为什么。有人能解释一下坠机的原因吗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
//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>();