在Java中,我们可以对函数使用final来确保它不能被覆盖。我们还可以在Java中使用final来确保不能继承类。同样,C ++标准C ++ 11添加了final。
在C ++ 11中使用最终说明符:
有时您不想允许派生类重写基类的虚函数。C ++ 11允许使用内置工具来防止使用最终说明符覆盖虚拟功能。
考虑以下示例,该示例显示了最终说明符的用法。该程序编译失败。
最终说明符的第二次使用:
C ++ 11中的最终说明符也可以用于防止类/结构的继承。如果将一个类或结构标记为final,则它将变为不可继承的并且不能用作基类/结构。
以下程序显示了使用最终说明符使类不可继承:
C ++ 11与Java
中的final注意请注意,C ++ 11中使用final指示符与Java中相同,但是Java在类名称之前使用final指示符,而C ++ 11中在类名称之后使用final指示符。方法定义的开始(在方法的返回类型之前),但是C ++ 11在函数名称之后使用最终说明符。
与Java不同,final不是C ++ 11中的关键字。final仅在以上上下文中使用时才具有含义,否则仅是标识符。
不使final为关键字的一种可能原因是确保向后兼容。可能存在将final用于其他目的的生产代码。例如,以下程序编译并运行时没有错误。
在Java中,final也可以与变量一起使用,以确保一个值只能分配一次。C ++ 11中没有final的这种用法。
领取专属 10元无门槛券
私享最新 技术干货