编译抽象类类型指针是否成功?

时间:2013-04-30 08:13:59

标签: c++ abstract-class virtual-functions

以下代码的编译是成功的,它不会运行,我认为因为指针p可能有一个virtual ptrvptr可能没有任何东西,这就是为什么它编译并且无法运行或者是否存在像vptr这样的东西被创建,因为这里没有除抽象类之外的类。

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

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

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:0)

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