以下代码的编译是成功的,它不会运行,我认为因为指针p
可能有一个virtual ptr
但vptr
可能没有任何东西,这就是为什么它编译并且无法运行或者是否存在像vptr
这样的东西被创建,因为这里没有除抽象类之外的类。
class one {
int a;
public:
one(){a=0;};
virtual void get()=0;
};
int main() {
one *p;
p->get();
}
答案 0 :(得分:4)
您没有初始化p
,这意味着它指向随机内存位置。取消引用它是未定义的行为,很可能是崩溃。
答案 1 :(得分:0)
p
的值不是有效指针,因为它不是任何对象的地址。解除引用p
是未定义的行为。