C++ override与final

版权声明:版权所有 如有侵权 概不追究 https://blog.csdn.net/weixin_40903417/article/details/87970563

override

多态行为的基础:基类声明虚函数,派生类声明一个函数覆盖该虚函数;

覆盖要求:函数签名(signature)完全一致;

函数签名包括:函数名 参数列表 const

override作用是保证派生类函数能覆盖基类的函数。

#include "stdafx.h"
using namespace std;
class Base1
{
public:
	virtual void display()=0;
};
void Base1::display()
{
	cout<<"Base1::display()"<<endl;
}
class Base2:public Base1
{
public:
	virtual void display() override;
};
void Base2::display()
{
	cout<<"Base2::display()"<<endl;
}
class derived:public Base2
{
public:
	virtual void display() override;
};
void derived::display() 
{
	cout<<"derived::display()"<<endl;
}
void fun(Base1* pt)
{
	pt->display();
}
int main()
{
	/*Base1 a;*/
	Base2 b;
	derived c;
	//fun(&a);
	fun(&b);
	fun(&c);
	system("Pause");
	return 0;
}

final

类名后加final不能被继承,函数名后加final不能被覆盖

class Base0 final
{
public:
	virtual void display() final;
};

猜你喜欢

转载自blog.csdn.net/weixin_40903417/article/details/87970563
今日推荐