gpt4 book ai didi

c++ - 为什么不能不创建实例就不能使用多态类

转载 作者:太空宇宙 更新时间:2023-11-04 16:25:07 26 4
gpt4 key购买 nike

<分区>

Possible Duplicate:
Calling class method through NULL class pointer

我在面试中被问到这个问题,有人能回答吗?

#include<string>
#include<iostream>
#include <stdio.h>

using namespace std;

class A
{
int k;
public:
void f1()
{

int i;
printf("1");

}

void f2()
{

k = 3;
printf("3");

}

};
class B
{
int i;
public:
virtual void f1()
{
printf("2");
scanf("%d",&i);
}

};


int main()
{
A* a = NULL;
B* b = NULL;

a->f1(); // works why?(non polymorphic)
b->f1(); // fails why?(polymorphic)
a->f2(); //fails why?
}

后两种情况属于多态类。第一种情况是普通类。我知道如果我在 A 的 f1 中访问 i 它将再次给出运行时异常。但我不明白为什么会这样

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com