C++ Learning Log 38---Runtime polymorphism, virtual functions and overriding


1. Runtime polymorphism

#include<iostream>
#include<string>
using std::cout;
using std::endl;
//任务1:创建A/B/C三个类,B继承A,C继承B,ABC均有toString函数
//任务2:重载print函数,接受B/C类型参数,调用toString()
class A
{
    
    
public:
	virtual std::string toString() {
    
     return "A"; }
};

class B :public A
{
    
    
public:
	std::string  toString() override {
    
     return "B"; }
};

class C :public B
{
    
    
public:
	std::string toString() override  {
    
     return "C"; }
};
void print(A* o)
{
    
    
	cout << o->toString() << endl;
}
void print(A& o)
{
    
    
	cout << o.toString() << endl;
}
int main()
{
    
    
	A a;
	B b;
	C c;
	A* p1 = &a;
	A* p2 = &b;
	A* p3 = &c;
	print(a);
	print(b);
	print(c);

	print(a);
	print(b);
	print(c);

	std::cin.get();
}

insert image description here
The result is shown above.

Guess you like

Origin blog.csdn.net/taiyuezyh/article/details/124271723