C++11 学习笔记(2) 11标准前模拟的final (仿java)

在其他语言上见到过 final关键字. java 的 final 关键字使用,
表示 “无法改变的量” or “最终态” 的含义.

  • final类中的方式默认 final方法
  • final方法可以被继承, 但不能被子类重写
  • final类不能被继承
  • final变量表示常量, 只能赋值一次,之后值不改变
  • java 的 private 方法默认是 final方法 – 不能用于修饰构造

C++11 也加入了final关键字的支持, 而在学习使用之前,
在旧标准上模拟 final类的实现:

eg:

虚继承的应用 – 不可派生的final 类

一个类如果不希望被继承,类似于Java中的具有final 性质的类,
这在C++中可以用虚继承来实现:

实践代码:

由于虚继承,所以 派生类 要直接负责构造MakeFinal类,
从而导致编译报错,所以作为派生类是不合法的。
class D: public MyClass{}; 另外,如果D类没有实例化对象,即没有被使用,实际上D类是被编译器忽略掉而不报错

原创文章,转载请注明: 转载自kaka_ace's blog

本文链接地址: C++11 学习笔记(2) 11标准前模拟的final (仿java)

发表评论

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