以下代码的编译是成功的,它没有运行,虽然,我认为因为指针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
是未定义的行为