C++11之override

C++动态绑定时,重载的虚函数形参不同,编译不会报错,但调用的函数将出问题
C++使用override显式告知编译器,该虚函数重载了父类,如形参不一致将会报错~

具体事例如下

class A
{
public:
	virtual void func(){printf("A func\n");};
	A(){printf("A\n");};
	virtual ~A(){printf("~A\n");};
};

class B :public A
{
public:
	//virtual void func()override{printf("B func\n");};
	virtual void func(){printf("B func\n");};
	B(){printf("B\n");};
	virtual ~B(){printf("~B\n");};
};

如代码后期由他人维护,维护者修改了B::func为B::func(int num)
则编译不会报错,但是当使用多态时,调用会出现问题.
加上override,可在编译时检测到问题

 

Pandora Heart 41

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>