完全隐藏类

平常我们一般都是把类的声明放到头文件中,实现文件里面对类的成员函数进行实现,如果别人调用,只需给调用者头文件(而不需要实现过程)从而隐藏了类的实现,但是,如果我们想把整个类都隐藏掉,那我们该怎么办呢?呵呵,看下面代码

//base.h
#ifndef BASE_H
#define BASE_H
class Base
{
     private:
        static Base *s_instance;
     public:
        virtual void func() = 0;
        virtual ~Base();
        static Base* getInstance();
};

//base.cpp
#include "base.h"
#include <iostream>
using namespace std;
Base* Base::s_instance = NULL;
Base::~Base()
{
}
class Hide : public Base
{
      public:
          void func()
          {
                std::cout << "call Hide::func" << std::endl;
          }
};

Base* Base::getInstance()
{
      if(!s_instance)
      {
          s_instance = new Hide();
      }
      return s_instance;
}

//main.cpp
#include "base.h"
int main()
{
      Base *base = Base::getInstance();
      //我们在这里通过多态来调用Hide的成员函数
      base->func();
}
 

通过上面的代码,大家估计有些感觉了,呵呵,在main.cpp 中,我们没用包含任何Hide类的信息(哪怕是头文件),但是却通过base来实现Hide的所有功能,这就完完全全的隐藏了Hide的声明和实现。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,242评论 25 708
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 6,510评论 0 17
  • 1.项目经验 2.基础问题 3.指南认识 4.解决思路 ios开发三大块: 1.Oc基础 2.CocoaTouch...
    阳光的大男孩儿阅读 5,031评论 0 13
  • 之前项目中有个服务需要独立出来,同事用springboot改成了微服务,这两天没啥忙的就给拿出瞅瞅学习一下~ De...
    YoRuo_阅读 944评论 0 0
  • 使用未来的样子指导现在的学习。“砍我不要砍需求”可能经历昨天的UI评审所以早上冒出来的念头竟然是这个。不过也突...
    博子阅读 139评论 0 0