zoukankan      html  css  js  c++  java
  • C++中怎么阻止一个类被继承

    C#中可以用sealed关键字,但是,C++中怎么阻止一个类被继承呢?

    方法就是把这个类的构造函数声明成private的,这样就不能被继承了。当然更好的办法是用非技术的手段了:)

    方法1: 构造函数private,提供一个Factory方法,缺点就是使用者必须用这个factory方法,不能直接使用这个类。

    class NoDerive {
        NoDerive(){};
    public:
        static NoDerive GetNoDerive(){ return NoDerive();};
        ~NoDerive(){};
    };

    方法2: 构造函数public,但是虚拟继承自一个private构造函数,没有方法1的缺点,但是看着有点hack。

    class NoDerive;
    class NoDeriveBase
    {
        friend class NoDerive;
        NoDeriveBase(){};
    };
    class NoDerive:private virtual NoDeriveBase {
    public:
        NoDerive(){};
        ~NoDerive(){};
    };
  • 相关阅读:
    Dapper 基础用法
    测试的分类
    Python
    MySQL数据库的增删改查
    Python面向对象之
    Python面向对象之
    Python
    HTML5/CSS3/JS笔记
    Python-Flask框架之
    Python进程与线程
  • 原文地址:https://www.cnblogs.com/fresky/p/2802346.html
Copyright © 2011-2022 走看看