#include<iostream>/////////////////////////////////继承和多态
using namespace std;
class A{
public:
q();
virtual w(); //virtual是虚函数的标志这里我们用虚函数来实现多态|
}; //|
A::q(){cout<<"qqqqqa"<<endl;}; //| 所以B中的w函数覆盖了A
A::w(){cout<<"wwwwwa"<<endl;}; //| 中的w函数,完全覆盖以至于B
//| 中的w函数可以视为不存在了
class B:public A{ //b公有public继承了a //|
public: //|
q(); //b和a有同名的两个函数,函数名相同但是函数意义不同 //|
w(); //其中的w函数用了虚函数来实现多态--------------------------------------------|
};
B::q(){cout<<"qqqqqqb"<<endl;};
B::w(){cout<<"wwwwwwb"<<endl;};
int main(){
B b;
A a;
A*p=&a;
p->q(); ////还是输出基类中的
p->w(); /////肯定是输出基类中的 基类指针指向基类
p=&b;
p->q(); ///输出
p->w();
return 0;
}
using namespace std;
class A{
public:
q();
virtual w(); //virtual是虚函数的标志这里我们用虚函数来实现多态|
}; //|
A::q(){cout<<"qqqqqa"<<endl;}; //| 所以B中的w函数覆盖了A
A::w(){cout<<"wwwwwa"<<endl;}; //| 中的w函数,完全覆盖以至于B
//| 中的w函数可以视为不存在了
class B:public A{ //b公有public继承了a //|
public: //|
q(); //b和a有同名的两个函数,函数名相同但是函数意义不同 //|
w(); //其中的w函数用了虚函数来实现多态--------------------------------------------|
};
B::q(){cout<<"qqqqqqb"<<endl;};
B::w(){cout<<"wwwwwwb"<<endl;};
int main(){
B b;
A a;
A*p=&a;
p->q(); ////还是输出基类中的
p->w(); /////肯定是输出基类中的 基类指针指向基类
p=&b;
p->q(); ///输出
p->w();
return 0;
}
本文探讨了C++中继承和多态的概念,通过具体实例展示了如何使用虚函数实现多态,并分析了继承关系下不同成员函数的覆盖与调用过程。
2218

被折叠的 条评论
为什么被折叠?



