抽象类类型指针编译成功



以下代码的编译是成功的,它没有运行,虽然,我认为因为指针p可能有一个virtual ptr,但vptr可能没有任何东西,这就是为什么它编译和不能运行,或者有像没有vptr正在创建的东西,因为这里没有抽象类以外的类。

class one {
    int a;
    public:
    one(){a=0;};
    virtual void get()=0;
};
int main() {
    one *p;
    p->get();
}

您没有初始化p,这意味着它指向随机内存位置。解引用是未定义的行为,很可能导致崩溃。

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

最新更新