0

以下代码的编译成功,但它没有运行,我认为因为指针p可能有 avirtual ptrvptr可能没有任何东西,这就是它编译但无法运行的原因,或者vptr是否正在创建类似 no 的东西因为这里除了抽象类之外没有其他类。

class one {
    int a;
    public:
    one(){a=0;};
    virtual void get()=0;
};

int main() {
    one *p;
    p->get();
}
4

2 回答 2

4

您不初始化p,这意味着它指向一个随机内存位置。取消引用它是未定义的行为,很可能是崩溃。

于 2013-04-30T08:16:02.653 回答
0

你的值p不是一个有效的指针,因为它不是任何对象的地址。取消引用p是未定义的行为。

于 2013-04-30T08:17:08.440 回答