C++何为数据抽象呢?请高手们帮忙详细回答一下

如题所述

抽象有两种, 一种是数据抽象, 一种是行为抽象.
行为抽象是C++最重要的机制之一.

数据抽象:
int i = 5 ; // 你把5表示5个苹果, 5倍关系等等, 这就是数据抽象.
// 用数据去表示事物,概念,关系

行为抽象:
比如, 任何表现出迭代器行为的东西都是迭代器, 来自<<C++ standard library>>里的原话

所以vector<>::iterator是迭代器, list<>::iterator是迭代器, 指针int* p也是迭代器
迭代器有哪些行为?
有解引用操作, 如*iter = 10,
有成员访问操作 iter->func(),
有递增操作 ++iter
所以只要你定义一个类, 支持上述操作, 你的类就是一个迭代器, 如果你的类同时又具有容器的行为, 你的类也可以叫做容器. 当然这种异型不太可能生存在有意义的软件环境中.

在C++中行为抽象一般有两种实现机制:

在面向对象的编程中, 使用接口
通常定义一个抽象类作为接口, 比如 class shape{ virtual void draw() ;}
任何继承该接口的子类, 都强制性的具有draw()行为, 所以任何子类都可叫做shape

在泛型编程中, 通常使用策略
策略是隐式接口, 在C/C++其实就等于convention(约定), 比如我们约定变量i开头表示int类型
template< typename T>
void draw( const T& sp )
{
sp.draw() ; // 由于策略是隐式的, 只要求T具有draw()行为, 而不要求T之间有任何继承关系
}

抽象 = 提取共性, 忽略无关
所以
class polymorph
{
void draw() ; // polymorth是一个shape, 因为图形的行为共性是draw()
// 图形或许还有move(), scale()行为, 但是在这里我们忽略掉, 对我们不重要
void drive() ; // polymorth是一部汽车, 因为汽车的行为共性是drive()
// 汽车还有stop(),但是...
} ;
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-06-19
数据的抽象简单的说吧就是把共性提出来,比如说我们形容一个人的时候我们需要从他的五官等等方面来考虑,但是这些东西或说属性是每个人都共有的,只有具体到每个人的时候才不一样,因此把这些大家都有的抽象出来分装起来就形成了C++的类,其实这是一种思想和语言本身没有关系,C一样可以有这种思想,就是我们熟悉的结构体,他对应的是想法而不是语言
第2个回答  2013-06-19
就是类的思想吧,提取事物的共性,抽象出类。

C++何为数据抽象呢?请高手们帮忙详细回答一下
行为抽象是C++最重要的机制之一.数据抽象:int i = 5 ; \/\/ 你把5表示5个苹果, 5倍关系等等, 这就是数据抽象.\/\/ 用数据去表示事物,概念,关系 行为抽象:比如, 任何表现出迭代器行为的东西都是迭代器, 来自<<C++ standard library>>里的原话 所以vector<>::iterator是迭代器, list<>::iterator...

请高手解释下c++中cout<<"sin("<<angle<<")="……cout后面的意思?详 ...
第一个<<之后是"sin("由于有""因此在屏幕上直接输出 sin(,之后是<<angle,angle应该是一个变量名屏幕上输出angle的值,类似的 第三个<<之后是"="在屏幕上就输出= 所以最后的输出 显示在屏幕上的是sin(x)=。其中x就是angle的值

问题在下面,请高手们详细回答谢谢
Aa×Aa→1\/4AA、2\/4Aa、1\/4aa。生一个白化病的男孩,白化病:1\/4,男孩1\/2。所以,是1\/8.第二个,正常女孩,正常3\/4,女孩1\/2,所以,是3\/8.题目要求一个是白化病男孩,一个是正常女孩,所以最后概率是:1\/8×3\/8=3\/64.

C++中如何读入多行数据?
c++里面读取一行为getline(ifstream,string)读多行就用WHILE例如while(getline(input,text)){}在WHILE循环中text就是当前循环的那一行数据 本回答由电脑网络分类达人 郭贝贝 推荐 举报| 答案纠错 | 评论 2 8 BigTopbaby 采纳率:58% 擅长: 电脑\/网络 游戏 数学 其他回答 while (cin.get(ch))的真值判断:ist...

2道初中化学计算题,请高手们帮忙写下过程,重点要过程,越详细的越好到时 ...
一、解析:解题时应将图象信息转化为化学问题,再由题给数据结合化学知识计算,解题的关键是确定A、B两点所表示的意义。由图象可以看出A点表示金属钠与水反应后得到的氢氧化钠溶液质量。该真观察图象发现,由A→B曲线上升较平缓,从B点开始曲线陡升,说明B点是NaOH和MgSO4恰好完全反应的点。(1)设4...

请高手们帮忙解释一下室内成角透视,最好有个把例子,谢谢
室内透视读为一点,两点透视。三点透视一般不出现。室外透视多为两点和三点,如画高楼时候就多用三点

初中英语题~请高手们帮忙回答~
同1 这道题就是if引导的条件从句 从句提出假设 如果你有任何事 请告诉我 主句是个祈使句 在与if条件从句搭配时 它的作用就相当于一个将来发生的动作 因为本身这就是一个假设并没有发生 符合主将从现 可以特殊记忆一下 这里的中心词是weather 因为它是不可数名词所以不能加a\/an所以你看到的就是形容...

...每个月还多少钱呢?希望高手们帮我算一下谢谢,
还款方式等额本息 贷款总额25万元 贷款利率6.55 按揭年数10年(120期)还款总额34.141万元 支付利息9.141万元 月均还款2,845.06元

谈恋爱高手们进来回答一下:与人眼神交流时怎样让自己的眼神走进对方的眼...
首先,你必须表现出你的真诚,这个可以为你在对方的形象中加分;其次是表现出你对对方的关注和爱意,让他(她)无时不刻地感受到来自你内心最真诚的感情;最后,尝试着跟对方交流,直视对方的眼睛。从这些方面都可以传达出你对对方的感情,让他(她)明白你的想法。

...还有一些期货的常识请高手帮忙解答一下,非常感谢!!!
是否会存在风险呢?回答:可以,这叫锁仓,也叫“马鞍式操作”,好处在于在一定时间内,锁定了部分盈利或者部分损失。风险在于,你解锁的时候可能看错方向。问题二:2.还有几个问题,我买完一单期货合约后,如果发现买的与市场方向相反,于是就马上止损出场,我想问的是,我止损出场后,我就和我当初买...

相似回答