#include<iostream> using namespace std; class B { public: virtual void display() { cout << "B: display()" << endl; } }; class C: public B { public: void display() { cout << "C: display()" << endl; } }; void fun(B* p) { p->display(); } int main() { B b; C c; B* pb; pb = &b; fun(pb); pb = &c; fun(pb); return 0; }
时间: 2024-04-08 10:33:16 浏览: 105
这段代码的运行结果是:
```
B: display()
: display()
```
在`main`函数中首先创建了一个`B`类的对象`b`和一个`C`类的对象`c。然后创建了一个指向`B`类的指针`pb`。
接下来将指针`pb`指向对象``,然后调用`fun函数,传入指针`pb`。由于`pb`指向的是`B`类的对象,所以调用的是`B`类的`display`函数,输出"B: display()"。
然后,将针`pb`指向对象`c`,再次调用`fun`函数,入指针`pb`。由于`pb`指向的是`C`类的对象,所以调用的是`C`类的`display`函数,输出"C: display()"。
因此,最终的运行结果是"B: display()"和"C: display()"。
相关问题
请写出下面程序的运行结果。 #include<iostream> using namespace std; class B ( public: virtual void display( ) cout << "B: : display( ) "<<endl; ] " class C: public B public: void display(0){ cout<<"C: : display() "<<endl; ] . void fun(B*p) [ p >display(0); void main() (B b,*pb; C c; pb=&b; fun (pb) ; pb=&c; fun (pb)
程序存在一些语法错误,修正后的代码如下:
```
#include<iostream>
using namespace std;
class B {
public:
virtual void display() {
cout << "B: display()" << endl;
}
};
class C: public B {
public:
void display() {
cout << "C: display()" << endl;
}
};
void fun(B* p) {
p->display();
}
int main() {
B b;
C c;
B* pb;
pb = &b;
fun(pb);
pb = &c;
fun(pb);
return 0;
}
```
运行结果为:
```
B: display()
C: display()
```
第一个问题回答完毕,请继续提问。
#include<iostream> using namespace std; class B0{ public: virtual void display(){ cout<<"B0::display()"<<endl; } }; class B1:public B0{ public: void dispaly(){ cout<<"B1::display()"<<endl; } }; void fun(B0 * ptr){ ptr->display(); } int main(){ B0 b0; B1 b1; fun(&b0); fun(&b1); return 0; } 的运行结果
运行结果为:
```
B0::display()
B1::display()
```
因为B1继承自B0,并重写了B0中的display()方法。在调用fun()函数时,传入的参数是指向B0或其子类的指针,因此会调用相应对象的display()方法。对于B0对象,调用B0中的display()方法,输出"B0::display()";对于B1对象,调用B1中重写的display()方法,输出"B1::display()"。
阅读全文