下列程序输出结果为2,请将程序用C++代码补充完整。class Base { public: void Basefun() { cout << 1; } }; class Derived :public Base { public: void fun() { cout << 2; } }; int main() { Derived* p = new Derived; ___________; ___________; return 0; }
时间: 2024-03-18 09:40:25 浏览: 45
可以使用指针调用基类函数的方式输出1,然后使用派生类函数输出2,完整的代码如下:
```
#include <iostream>
using namespace std;
class Base {
public:
void Basefun()
{
cout << 1;
}
};
class Derived :public Base {
public:
void fun() {
cout << 2;
}
};
int main() {
Derived* p = new Derived;
p->Base::Basefun();
p->fun();
return 0;
}
```
相关问题
用c++代码写出下列程序的输出结果为二请将程序补充完整 class Base Leublis void Basefun class Derived: public Base Leublie int main l ¿Derived *p= new Derived: return 0;1
以下是对程序进行补充后的完整代码,并解释输出结果:
```c++
#include <iostream>
using namespace std;
class Base {
public:
void Basefun() { cout << "Basefun" << endl; }
virtual void Basevir() { cout << "Basevir" << endl; }
};
class Derived: public Base {
public:
void Derivedfun() { cout << "Derivedfun" << endl; }
virtual void Derivedvir() { cout << "Derivedvir" << endl; }
};
int main() {
Derived *p = new Derived;
Base *pb = p;
pb->Basefun(); // 输出 Basefun
pb->Basevir(); // 输出 Derivedvir
// pb->Derivedfun(); // 编译错误,Base 类型的指针无法调用 Derived 类的成员函数
// pb->Derivedvir(); // 编译错误,Base 类型的指针无法调用 Derived 类的成员函数
return 0;
}
```
程序定义了一个 `Base` 类和一个 `Derived` 类,`Derived` 类继承自 `Base` 类。在 `main()` 函数中,创建了一个 `Derived` 类型的指针 `p`,并将其赋值给一个 `Base` 类型的指针 `pb`。然后通过 `pb` 指针调用了 `Basefun()` 和 `Basevir()` 两个成员函数。
由于 `Basevir()` 函数在 `Base` 类中被声明为虚函数,因此在运行时,将根据实际对象的类型来调用相应类型的函数。虽然 `pb` 指针的类型是 `Base*`,但它指向的实际对象是 `Derived` 类型的,因此调用 `Basevir()` 函数时将会调用 `Derivedvir()` 函数。因此程序的输出结果为:
```
Basefun
Basevir
```
在如下程序的空格处填写正确的语句。#include<iostream>usingnamespacestd;classBase{public:voidfun(){cout<<”Basefun”<<endl;}};classDerived:publicBase{public:voidfun(){;//调用基类的函数fun()cout<<”Derivedfun”<<endl;}
在Derived类中重写(override)fun()函数时,可以使用作用域解析运算符 `::` 来调用基类中的fun()函数。因此,正确的语句应该是:
```
Base::fun();
```
完整的程序如下:
```
#include<iostream>
using namespace std;
class Base {
public:
void fun() {
cout << "Basefun" << endl;
}
};
class Derived : public Base {
public:
void fun() {
Base::fun(); //调用基类的函数fun()
cout << "Derivedfun" << endl;
}
};
int main() {
Derived d;
d.fun();
return 0;
}
```
当我们通过Derived类的对象d调用fun()函数时,会先调用Derived类中的fun()函数,再通过 `Base::fun()` 语句调用Base类中的fun()函数,最后输出 "Derivedfun"。
阅读全文