多态的调用方法
1: 父類的指針指向子類的地址,然后調用虛函數
列子:
#include<iostream>
#include<memory>
class A
{
public:
?? ?A() = default;
?? ?virtual ~A() = default;
?? ?virtual void display()
?? ?{
?? ??? ?std::cout << "A" << std::endl;
?? ?}
};
class B :public A
{
public:
?? ?B() = default;
?? ?virtual ~B() = default;
?? ?virtual void display()
?? ?{
?? ??? ?std::cout << "B" << std::endl;
?? ?}
};
int main()
{
?? ?std::shared_ptr<A> ptr = std::make_shared<B>();
?? ?ptr->display();
}
2: new之類的地址,調用被繼承的函數,再被繼承的函數中調用虛函數
#include<iostream>
#include<memory>
class A
{
public:
?? ?A() = default;
?? ?virtual ~A() = default;
?? ?void display1()
?? ?{
?? ??? ?display();
?? ?}
?? ?virtual void display()
?? ?{
?? ??? ?std::cout << "A" << std::endl;
?? ?}
};
class B :public A
{
public:
?? ?B() = default;
?? ?virtual ~B() = default;
?? ?virtual void display()
?? ?{
?? ??? ?std::cout << "B" << std::endl;
?? ?}
};
int main()
{
?? ?std::make_shared<B>()->display1();
}
總結
- 上一篇: Python函数定义变量报错:local
- 下一篇: Kubernetes 部署 Ingres