===============================================
未完待续,转载时请表明出处:
http://www.cofftech.com/thread-1390-1-1.html
欢迎大家跟帖讨论哈~~~~~
===============================================
按照软件工程的约定,一般只在类体内放置成员函数的原型说明,而这些函数的定义则放置于类体之外。
当类体中包含成员函数的函数定义时,称为类的定义。当类体中只包含成员函数的函数说明(即函数原型)而不包括函数定义时,则不称为类的定义而称为类的接口(interface)。
通常将类的接口部分放在供用户程序使用的头文件中,向用户提供为调用类的成员函数所需的函数原型,从而形成类的接口。
位于别处的包括所有成员函数的定义的部分则称为类的实现[方法] (implementation)。它们通常放在另外的隐藏的源文件中。这些隐藏的文件不提供给用户。
软件工程的一个基本原则是将供用户使用的类接口与类的实现[方法]分离。
对于用户而言,他们只须关心类的接口,只要类的功能不变也即类的接口部分不变,无论类的实现[方法]部分如何改变,都不影响用户使用,也无须修改用户程序。用户调用类的成员函数时不须了解类的源代码(即成员函数的定义),而只须了解类的功能也即类的接口即可。因此用户在使用时只须将可能改动过的类的实现[方法]的目标代码连接在用户程序之内即可。软件供应商提供头文件和各隐藏源文件的目标代码模块(即目标文件),以供用户用于编写各种用户程序。
将类接口的重要信息放在头文件中而将不希望用户了解的信息(类的实现[方法]部分)放在不公开发表的源文件(以下称为隐藏源文件)中,这符合最低权限原则。
描述类的功能而不谈其实现细节的做法,有时称为数据抽象(data abstraction)。有人称之为数据隐藏。C++依此方式所提供的所谓抽象数据类型(abstract data type)包括两个部分:类的接口和类的实现[方法]。
[例1]类的接口部分与类的实现[方法]部分彼此分离的例子,包括四个文件。
头文件mulfile.h
//只包括类的接口部分
#if !defined(_MULFILE_H)
#define _MULFILE_H
#include <iostream.h>
class integ
{
int j;
public:
integ(int a) { i = a; }
int sq();
};
class dbl
{
double d;
public:
dbl(double t) { d = t; }
double sq();
};
#endif //_MULFILE_H
第一个隐藏源文件mulfile1.cpp(包括类的实现部分,供应商只提供目标文件mulfile1.obj)
// mulfilel.cpp
#include "mulfile.h"
int jnteg::sq( )
{ return i*i; }
第二个隐藏源文件mulfile2.cpp(包括类的实现部分,供应商只提供目标文件mulfile2.obj)
// mulfile2.cpp
#include "mulfile.h"
double dbl::sq( )
{ return d*d; }
主文件mulfile_tst.cpp(用户编写的应用文件)
// mulfile_tst.cpp
#include "mulfile.h"
void main()
{
int j;
double d;
integ ii(6);
dbl dd(1.5);
i = ii.sq();
d = dd.sq();
cout << i << endl;
cout << d << endl;
}
/* Results:
36
2.25 */
分享到:
相关推荐
C++ 学习笔记C++ 学习笔记C++ 学习笔记C++ 学习笔记
c++学习笔记/知识要点精华版
c++学习笔记.pdf
C++学习笔记C++学习笔记C++学习笔记C++学习笔记C++学习笔记
C++学习笔记
通过一个简单的控制台游戏示例 展现C++编程接口与实现的分离方法
c++完美学习笔记c++完美学习笔记c++完美学习笔记c++完美学习笔记
C++学习笔记: 以学习、思考、记录、分享为乐。
【C++学习笔记】一份详细的学习笔记,让你轻松掌握C++编程!
C++ 学习笔记C++ 学习笔记C++ 学习笔记C++ 学习笔记002
C++学习笔记
C++学习笔记经典(与C比较),是学习C++的好资料。
C++ 学习笔记C++ 学习笔记C++ 学习笔记C++ 学习笔记C++ 学习笔记003
C++ 学习笔记C++ 学习笔记C++ 学习笔记C++ 学习笔记C++ 学习笔记004
C++基础的学习笔记(其中的代码源件可私信留言) C++中的空头程序 使用C++书写hello world 学习变量 学习常量 标识符命名规则 数据类型 运算符 程序流程结构 数组 函数 指针 结构体
C++ 学习笔记C++ 学习笔记C++ 学习笔记C++ 学习笔记001
C++学习笔记:关于C++类与动态内存分配中布局new操作符
C++库封装JNI接口-实现java调用c++
C++接口和实现分离代码示例