学习日志(十八)
虚函数和多态
1.多态
1.1概念理解【注意】
多态指是同一个行为的不同结果
静态联编:函数重载
动态联编:C++类的多态
多态实现的前提条件
1.父类必须存在和子类一样(除函数体外都相同)的函数,并且是虚函数
2.public继承才有多态
3.必须存在指针引用
1.2简单示例
1.2.1简单继承
#include <iostream>
#include <string>
using namespace std;
/*父类*/
classMM
{
public:
virtual void print0
{
cout <""父类虚函数" << end1;
}
void printData()
{
cout <<"父类普通函数"<< end1;
};
/*子类 */
class Boy:public MM
{
public:
void print()
{
cout <<"子类的print函数" << endl;
}
void printData()
{
cout << "子类的printData函数"<< end1;
}
private:
};
int main() {
//1.正常对象﹣-->就近原则
MM mm;
Boy boy; /*调用自身的函数*/
mm.printData();
1.2.2多级继承
#include <iostream>
#include <string>
using namespace std;
class A
{
public:
virtual void print()
{
cout<<"A"<< endl;
}
};
class B: public A
{
public:
void print()
{
cout<<"B"<< endl;
}
}:
class C :public B
{
public:
void print()
{
cout<< "C" << endl;
}
};
int main()
{
//虚函数被多层继承
B*pB=new C;
pB->print();
A* pA = newC; //隔代了【效果相同】
pA->print();
pA->A::print(); //使用了作用域限定符后,即不存在多态情形
return0;
}