试题:实现一个不能被继承的类(下)
来源:互联网 发布:软件管理器 编辑:程序博客网 时间:2024/06/06 02:37
我们也不必气馁, 我们可以用类模板的特化来做, 实现如下:
template <class T>class FinalMaker;class A;template <>class FinalMaker<A>{private: ~FinalMaker() { } friend class A;};class A : virtual public FinalMaker<A>{};class B : public A{public: static void static_func() { } static int value;};int B::value = 0;int main(){ A a;// B b; // error B::static_func(); B::value = 1; return 0;}
这样, 如果我们要把C也写成A这样: 我们仍然要做所有A做过的事(把FinalMacker以C为模板参数特化出一份代码):
class C;template <>class FinalMaker<C>{private: ~FinalMaker() { } friend class C;};class C : virtual public FinalMaker<C>{};
从代码量看, 类模板的方法比按最前面的代码再写一份关于C的, 都要多一些, 复杂些, 唯一的好处是, 我们不用再为命名而烦恼了
上面的代码中的:
template <class T>class FinalMaker;
我用的是FinalMaker的声明, 而非定义:
template <class T>class FinalMaker{private: ~FinalMaker() { }};
其实, 两个方式都可以
- 试题:实现一个不能被继承的类(下)
- 试题:实现一个不能被继承的类(上)
- 试题:实现一个不能被继承的类(续之下)
- 试题:实现一个不能被继承的类(续之上)
- 面试题:C++实现一个不能被继承的类
- C++实现一个不能继承的类
- 用C++实现一个不能被继承的类
- 用C++实现一个不能被继承的类
- C++实现一个不能被继承的类
- C++实现一个不能被继承的类
- 用C++实现一个不能被继承的类
- C++实现一个不能被继承的类
- 【c++】实现一个不能被继承的类
- c++中如何实现一个不能被继承的类
- 剑指offer面试题48C++写一个不能被继承的类
- 剑指offer面试题48 C++写一个不能被继承的类
- 剑指offer——面试题48:用C++设计一个不能被继承的类
- 设计一个不能被继承的类
- 《当程序员的那些狗日日子》后记
- 试题:实现一个不能被继承的类(上)
- office2010安装Microsoft Office Document Imaging (MODI)
- PHP多线程版本HASH漏洞攻击工具
- EasyMock 使用方法与原理剖析
- 试题:实现一个不能被继承的类(下)
- John the Ripper用法全解
- Dev-C++的一些使用技巧
- 如何在sqlserver数据库表中建立复合主键
- 写在2011
- HDOJ 1869 六度分离 两两之间最短距离的最大值
- CppSQLite - C++ Wrapper for SQLite
- 写在2012元旦之前
- 2011年年度总结——学习内容整理与感受