c++11中的final和override关键字

c++11中的final和override关键字,第1张

目录

final关键字

final的第二个作用

override关键字


为了防止我们忘记重写虚函数,c++11提供了2个关键字来帮助我们检查

final关键字

修饰虚函数,被修饰的虚函数不能被重写

class A
{
public:
	virtual int add(int x, int y) final
	{
		return x + y;
	}
};

class B :public A
{
	int add(int x, int y)	//修饰虚函数,被修饰的虚函数不能被重写
	{
		return x + y;
	}
};

被修饰后就不能进行重写,不然编译器会报错

注意:修饰的是基类的虚函数

 

final的第二个作用
class A	final
{
public:
	virtual int add(int x, int y) 
	{
		return x + y;
	}
};

class B :public A
{
	int add(int x, int y)	
	{
		return x + y;
	}
};

被final修饰的类不能进行继承,不然编译器会报错

 

override关键字

检查派生类虚函数是否完成重写,没有完成重写就会报错

class A
{
public:
	virtual int add(int x, int y) 
	{
		return x + y;
	}
};

class B :public A
{
	int add(int x, int y) override	//检查基类函数是否完成重写,没有完成重写就会报错
	{
		return x + y;
	}
};

注意:但是一般只要基类时虚函数,就会构成重写,因为派生类的函数会继承基类的相同成员的虚属性,构成虚函数

注意:修饰的是子类的虚函数

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/langs/717567.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-25
下一篇 2022-04-25

发表评论

登录后才能评论

评论列表(0条)

保存