C++中接口与实现分离的技术

来源:互联网  作者:StarLee
摘要:在用C++写要导出类的库时,我们经常只想暴露接口,而隐藏类的实现细节。也就是说我们提供的头文件里只提供要暴露的公共成员函数的声明,类的其他所有信息都不会在这个头文件里面显示出来。这个时候就要用到接口与实现分离的技术。…

在用C++写要导出类的库时,我们经常只想暴露接口,而隐藏类的实现细节。也就是说我们提供的头文件里只提供要暴露的公共成员函数的声明,类的其他所有信息都不会在这个头文件里面显示出来。这个时候就要用到接口与实现分离的技术。

下面用一个最简单的例子来说明。

类ClxExp是我们要导出的类,其中有一个私有成员变量是ClxTest类的对象,各个文件内容如下:

lxTest.h文件内容:

class ClxTest 
{
public:
  ClxTest();
  virtual ~ClxTest();
 
  void DoSomething();
};

lxTest.cpp文件内容:

#include "lxTest.h"

#include <iostream>
using namespace std;

ClxTest::ClxTest()
{
}

ClxTest::~ClxTest()
{
}

void ClxTest::DoSomething()
{
  cout << "Do something in class ClxTest!" << endl;
}

///////////////////////////////////////////////////////////////////////////////

lxExp.h文件内容:

#include "lxTest.h"

class ClxExp 
{
public:
  ClxExp();
  virtual ~ClxExp();

void DoSomething();

private:
  ClxTest m_lxTest;

void lxTest();
};


   lxExp.cpp文件内容:

#include "lxExp.h"

ClxExp::ClxExp()
{
}

ClxExp::~ClxExp()
{
}

//  其实该方法在这里并没有必要,这样只是为了说明调用关系
void ClxExp::lxTest()
{
  m_lxTest.DoSomething();
}

void ClxExp::DoSomething()
{
  lxTest();
}

【相关文章】好搜一下
修练8年:C++面向对象程序设计之体会

修练8年:C++面向对象程序设计之体会

六年前,我刚热恋“面向对象”(Object-Oriented)时,一口气记住了近…