再请问一个问题咯,麻烦咯麻烦咯
来源:学生作业帮 编辑:百度作业网作业帮 分类:综合作业 时间:2024/07/16 08:13:07
再请问一个问题咯,麻烦咯麻烦咯
#includeusing namespace std;class Baseclass{public:void Fun1() {cout
#includeusing namespace std;class Baseclass{public:void Fun1() {cout
![再请问一个问题咯,麻烦咯麻烦咯](/uploads/image/z/17349397-61-7.jpg?t=%E5%86%8D%E8%AF%B7%E9%97%AE%E4%B8%80%E4%B8%AA%E9%97%AE%E9%A2%98%E5%92%AF%2C%E9%BA%BB%E7%83%A6%E5%92%AF%E9%BA%BB%E7%83%A6%E5%92%AF)
#include <iostream>
using namespace std;
class Baseclass {
public:
void Fun1() {
cout << "Fun1() in Baseclass is called!" << endl;
}
virtual void Fun2() {
cout <<"Fun2() in Baseclass is called!" << endl;
}
};
class derivedclass : public Baseclass {
public :
void Fun1() {
cout << "Fun()1 in derivedclass is called!" << endl;
}
void Fun2() {
cout<< "Fun()2 in derivedclass is called!" << endl;
}
};
int main(){
derivedclass d;
Baseclass *pb = &d;
Baseclass b;
pb->Fun1();
pb->Fun2();
return 0;
}
因为 pb 是声明为基类 Baseclass 的指针,所以通过它调用 Fun1 时,调用了基类的函数.
而因为基类中加了 virtual 声明 Fun2 是虚函数,在派生类中又重写了该虚函数,实现了对基类虚函数的覆盖.当基类指针指向派生类的对象时,对虚函数的调用就会调用了派生类的函数而不是基类的函数.这是面向对象中的多态性的体现.
using namespace std;
class Baseclass {
public:
void Fun1() {
cout << "Fun1() in Baseclass is called!" << endl;
}
virtual void Fun2() {
cout <<"Fun2() in Baseclass is called!" << endl;
}
};
class derivedclass : public Baseclass {
public :
void Fun1() {
cout << "Fun()1 in derivedclass is called!" << endl;
}
void Fun2() {
cout<< "Fun()2 in derivedclass is called!" << endl;
}
};
int main(){
derivedclass d;
Baseclass *pb = &d;
Baseclass b;
pb->Fun1();
pb->Fun2();
return 0;
}
因为 pb 是声明为基类 Baseclass 的指针,所以通过它调用 Fun1 时,调用了基类的函数.
而因为基类中加了 virtual 声明 Fun2 是虚函数,在派生类中又重写了该虚函数,实现了对基类虚函数的覆盖.当基类指针指向派生类的对象时,对虚函数的调用就会调用了派生类的函数而不是基类的函数.这是面向对象中的多态性的体现.