C++面向对象程序设计

C++是在C语言基础上增加面向对象机制的编程语言,它保留了C的大部分功能并扩展了输入输出流、函数模板、内置函数、类和对象等特性。面向对象编程方法旨在提高软件开发效率,通过类和对象的封装、继承和多态性来组织程序。C++允许使用函数重载、函数模板以实现代码复用,同时引入了动态内存分配和撤销、标准输入输出流cin和cout,以及内联函数以提高执行效率。在程序设计中,C++提供了面向过程和面向对象的双重选择,是大型程序开发的有效工具。
摘要由CSDN通过智能技术生成

从C到C++

        C语言是结构化和模块化的语言,它是面向过程的。在处理较小规模的程序时,程序员用C语言较为得心应手。但是当问题比较复杂﹑程序的规模比较大时,结构化程序设计方法就显出它的不足。C程序的设计者必须细致地设计程序中的每一个细节,准确地考虑程序运行时每一时刻发生的事情,例如各个变量的值是如何变化的,什么时候应该进行哪些输入,在屏幕上应该输出什么等。这对程序员的要求是比较高的,如果面对的是一个复杂问题,程序员往往感到力不从心。当初提出结构化程序设计方法的目的是解决软件设计危机,但是这个目标并未完全实现。

        为了解决软件设计危机,在20世纪80 年代提出了面向对象的程序设计( objectoriented programming , 0OP)思想,这就需要设计出能支持面向对象的程序设计方法的新语言。Smalltalk 就是当时问世的一种面向对象的语言。而在实践中,人们发现由于C语言是如此深入人心,使用如此广泛,以至最好的办法不是另外发明一种新的语言去代替它,而是在它原有的基础上加以发展。在这种形势下,C++应运而生。C++是由AT&TBell(贝尔)实验室的BjarneStroustrup博士及其同事于20世纪80年代初在C语言的基础上开发成功的。C++保留了C语言原有的所有优点,增加了面向对象的机制。由于C++对C的改进主要体现在增加了适用于面向对象程序设计的“类( class )”,因此最初它被Bjarne Stroustrup称为“带类的C”。后来为了强调它是C的增强版,用了C语言中的自加运算符“++”,称为C++。

        AT&T发布的第一- 个C ++编译系统实际上是一个预编译器(前端编译器),它把C++代码转换成C代码,然后用C编译系统编译,生成目标代码。第一个真正的C++编译系统是1988年诞生的。C++ 2.0 版本于1989 年出现,它作了重大的改进,包括了类的多继承。1991 年的C++ 3.0版本增加了模板,C++ 4.0版本则增加了异常处理、命名空间、运行时类型识别(RTTI)等功能。ANSIC++标准草案是以C++4.0版本为基础制定的, 1997年ANSI C++标准正式通过并发布。但是目前使用的C++编译系统中,有一些是早期推出的,并未全部实现ANSIC++标准所建议的功能。C++是由C发展而来的,与C兼容。用C语言写的程序基本上可以不加修改地用于C++。从C++的名字可以看出它是C的超集。C++既可用于面向过程的结构化程序设计,也可用于面向对象的程序设计,是一种功能强大的混合型的程序设计语言。

C++对C的“增强”,表现在两个方面:

        (1)在原来面向过程的机制基础上,对C语言的功能作了不少扩充。

        (2)增加了面向对象的机制。

        面向对象程序设计是针对开发较大规模的程序而提出来的,目的是提高软件开发的效率。只有编写过大型程序的人才能真正体会到C的不足和IC++的优点。

        不要把面向对象和面向过程对立起来,面向对象和面向过程不是矛盾的,而是各有用途、互为补充的。在面向对象程序设计中仍然要用到结构化程序设计的知识,例如,在类中定义一个函数就需要用结构化程序设计方法来实现。任何程序设计都需要编写操作代码,具体操作的过程就是面向过程的。对于简单的问题,直接用面向过程方法就可以轻而易举地解决。

C++对C的扩充

        C++既叮用于面向过程的程序设计,也可用于面向对象的程序设计。在面向过程程序设计的领域,C++继承了C语言

        提供的绝大部分功能和语法规定,并在此基础上作了不少扩充,主要有以下几个方面。

C++ 的输入输出

        C++为了方便用户,除了可以利用printf和scanf函数进行输出和输人外,还增加了标准输人输出流cout和cin。cout是由c和out两个单词组成的,代表C++的输出流,cin是由c和in两个单词组成的,代表C++的输人流。它们是在头文件iostream中定义的。键盘和显示器是计算机的标准输人输出设备,所以在键盘和显示器上的输人输出称为标准输人输出,标准流是不需要打开和关闭文件即可直接操作的流式文件。

函数模板

        函数的重载可以实现一个函数名多用,将实现相同的或类似功能的函数用同一个函数名来定义。这样可以使编程者在调用同类函数时感到含义清楚,方法简单。但是在程序中仍然要分别定义每一个函数,如例1. 6的程序中三个max函数的函数体是完全相同的,只是形参的类型不同,也要分别定义。有些读者自然会想到,对此能否再简化呢?为了解决这个问题,C++提供了函数模板( function template)。所谓函数模板,实际上是建立一个通用函数,其函数类型和形参类型不具体指定,用一个虚拟的类型来代表。这个通用函数就称为函数模板。凡是函数体相同的函数都可以用这个模板来代替,不必定义多个函数,只须在模板中定义一次即可。在调用函数时系统会根据实参的类型来取代模板中的虚拟类型,从而实现了不同函数的功能。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值