C++能设计实现一个不能被继承的类吗
2015-12-15 20:58
417 查看
template<typename T>class MakeFinal { firend T; private: MakeFinal(); ~MakeFinal(); }; class FinalClass2:virtual public MakeFinal<FinalClass2> { public: FinalClass2(){} ~FinalClass2(){} };
由于FinalClass2是MakeFinal
<FinalClass2>的友元类,所以在FinalClass2中调用MakeFinal
<FinalClass2>的构造函数和析构函数不会造成编译错误。
但对于FinalClass2而言,继承它的一个类并创建实例时,继承类并不是MakeFinal
<FinalClass2>的友元类,所以在FinalClass2中调用MakeFinal
<FinalClass2>的构造函数和析构函数会造成编译错误,不能调用其私有的构造函数。所以,试图从FinalClass2继承的类,一旦实例化,都会导致编译错误,因此FinalClass2不能被继承。
相关文章推荐
- 实战c++中的vector系列--构造、operator=和assign区别
- 实战c++中的vector系列--构造、operator=和assign区别
- VC++获取当前系统时间日期 GetSystemTime()函数的用法
- 【POJ 2104】K-th Number 题意&题解&代码(c++)
- C语言: 桶排序
- 在c++代码中执行bat文件
- C++中指针与引用的关系
- 【先进的算法】Lasvegas算法3SAT问题(C++实现代码)
- C语言for语句用法详解
- 数组引用:C++ 数组做参数 深入分析
- C语言运算符的优先级和结合性一览表
- 第六篇 Java编译器与C/C++编译器的比较
- C++ strcpy、strcat、strcmp和strlen的实现
- 联合与枚举 、 高级指针 、 C语言标准库(一)
- 魔王语言(C++
- 日常小记:C++中的log10函数
- COM组件简介
- 区间树上的重叠区间查找算法(C++)
- 1. C语言中的 sizeof 问题
- 联合与枚举 、 高级指针 、 C语言标准库(一)