c++ - 抽象类类型指针编译成功?

标签 c++ abstract-class virtual-functions

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

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

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

最佳答案

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

关于c++ - 抽象类类型指针编译成功?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16295185/

相关文章:

c++ - 如何解决虚拟后缀运算符的切片问题?

c++ - C++:类特化对于合规的编译器是否有效?

c++ - 标记为 `virtual final` 的基类方法是否会引入额外的开销?

c++ - 通用 Makefile 中所需的预构建规则

c++ - 检查移动是否有效的简单游戏算法

安卓抽象布局

c# - 抽象方法和隐藏方法

C++ 函数指针和类

c++ - 我需要默认隐藏 QTableWidget

c# - OOP - 如何要求派生类将值设置为基本属性?