再请问一个问题咯,麻烦咯麻烦咯
来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/11/09 10:19:55
再请问一个问题咯,麻烦咯麻烦咯
#includeusing namespace std;class Baseclass{public:void Fun1() {cout
#includeusing namespace std;class Baseclass{public:void Fun1() {cout
#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 是虚函数,在派生类中又重写了该虚函数,实现了对基类虚函数的覆盖.当基类指针指向派生类的对象时,对虚函数的调用就会调用了派生类的函数而不是基类的函数.这是面向对象中的多态性的体现.