Der1 called! Der2 called! #include <iostream> using namespace std; class Base { public: __________;//(1)声明纯虚函数 5分 }; class Der1:public Base { public: void display(){ cout<<"Der1 called!"<<endl;} }; class Der2:public Base { public: void display() { cout<<"Der2 called!"<<endl;} }; void fun(________)(2)补充函数形参 5分 { p->display(); } int main() { Der1 b1; Der2 b2; Base * p=&b1; fun(p); _______(3)补充语句,完成动态多态 5分 fun(p); return 0; } (4)给出运行结果 5分
时间: 2023-12-06 07:41:22 浏览: 78
class Base {
public:
virtual void display() = 0; //(1)声明纯虚函数
};
void fun(Base *p) //(2)补充函数形参
{
p->display();
}
int main()
{
Der1 b1;
Der2 b2;
Base *p = &b1;
fun(p); //(3)补充语句,完成动态多态
p = &b2;
fun(p);
return 0;
}
//运行结果:
//Der1 called!
//Der2 called!
相关问题
下面程序中Base是抽象类。请在下面程序的横线处填上适当内容,以使程序完整,并使程序 的输出为: #include <iostream> class Base {public: _______________; }; class Der1:public Base {public: void display(){cout<<"Der1 called!"<<endl;} }; class Der2:public Base {public: void display(){cout<<"Der2 called!"<<endl;} }; void fun(______________) { p->display();} void main() { Der1 b1; Der2 b2; Base * p=&b1; fun(p); p=&b2; fun(p); }
下面程序中Base是抽象类。请在下面程序的横线处填上适当内容,以使程序完整,并使程序 的输出为:
```
#include <iostream>
class Base {
public:
virtual void display() = 0;
};
class Der1:public Base {
public:
void display(){std::cout<<"Der1 called!"<<std::endl;}
};
class Der2:public Base {
public:
void display(){std::cout<<"Der2 called!"<<std::endl;}
};
void fun(Base *p) {
p->display();
}
void main() {
Der1 b1;
Der2 b2;
Base * p=&b1;
fun(p);
p=&b2;
fun(p);
}
```
程序输出:
```
Der1 called!
Der2 called!
```
在 `Base` 类中,我们需要定义一个纯虚函数 `display()`,使得 `Base` 成为一个抽象类。在 `fun()` 函数中,需要使用 `Base` 类型的指针作为参数,这样才能保证在调用 `p->display()` 时,能够调用到派生类中实现的 `display()` 函数。因此,在 `fun()` 函数的参数列表中,我们需要使用 `Base *` 类型的指针。
在 `main()` 函数中,我们定义了两个派生类对象 `b1` 和 `b2`,并分别将它们的地址赋值给 `Base *` 类型的指针 `p`。然后分别调用了 `fun(p)` 函数,程序输出了 `Der1 called!` 和 `Der2 called!`。
阅读全文