<b>C++的中抽象</b>[VC/C++编程]
本文“<b>C++的中抽象</b>[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
在C++中,以类、虚函数等为代表的数据抽象功效一向是C++的核心和难点.这里我想结合自己的利用经验,谈谈对C++中抽象的一点浮肤见解!
我认为C++的抽象应当是指:从我们需求办理的问题动身,在与该问题相关的一组关联对象中提取出主要的或共有的部份――说简单一点,就是用相同的行为来操作差别的对象.
从提出问题到找出与该问题相关的对象,这是一个互动的、反复的历程.在对相关对象的抽象中,随着熟习的深化,我们大概会改正最初的目标,而最初目标的改正又大概使一组新的相关对象被加入进来.如:假定目前要计划一个基于广域网的邮件服务器,首先大概需求通过socket对底层协议举行封装,为高层的pop3、smtp协议供应一组尺度的接口.开始为了使问题简化我们大概筹划只封装TCP/IP协议,不过基于以下两点我们有来由改正最初的需求:
1、pop3、smtp需求的底层接口很简单.除了衔接,仅需求发送、接纳一块数据的功效
2、用socket举行网络编程,大大都常见协议间的差别很小,有很多都仅仅只是初始化和衔接差别罢了我们只需求做很小的勤奋便可以兼容大大都常用协议(如:ATM、Ipx、红外线协议等).
目前决意改正需求,除了TCP/IP协议,还要支持一些其他的的常用协议.通过对最初目标的改正,除了TCP/IP协议对象,又会有一组相关的协议对象被加入进来.我们可以很简单从这组相关对象中提出共有的部份,将他抽象到另一个大众对象中.当然,按照具体利用环境差别,这大概并非最佳筹划.
C++中通例的抽象是在一组彼此间有“血缘”关系的类中展开的.如:
Class Parent
{
virtual ~Parent(){};
virtual void GetValue(){ .... };
virtual void Test(){ ... };
};
class child1 : public parent
{
virtual ~child1(){};
virtual void GetValue(){...};
virtual void Test(){ ... } const;
};
class child2 : public parent
{
virtual ~child2(){};
virtual void GetValue(){...};
virtual void Test(){ ... } ;
};
(趁便说一句,child1::Test() const 不是基类 parent::Test() 的重载.)
由上可总结出C++中抽象的一些基本特点:
1、被抽象对象必须直接或间接派生至某个类对象
2、假如你不用没有范例安全的操作,如:向下转型操作或强迫范例转化操作(像COM那样).那么派生类中需求抽象的行动必须在某个基类中呈现.
3、基类的析构函数必须是一个虚函数(嗯.... 有点无赖!)
................
以上是“<b>C++的中抽象</b>[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |