以下代码编译成功,但它没有运行,我认为因为指针 p
可能有一个 virtual ptr
但是 vptr
可能没有任何内容,这就是它编译但无法运行的原因,或者是否没有创建 vptr
之类的东西,因为这里除了抽象类之外没有其他类。
class one {
int a;
public:
one(){a=0;};
virtual void get()=0;
};
int main() {
one *p;
p->get();
}
最佳答案
你没有初始化p
,这意味着它指向一个随机的内存位置。取消引用它是未定义的行为,很可能是崩溃。
关于c++ - 抽象类类型指针编译成功?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16295185/