C++概述.docx
- 文档编号:27774535
- 上传时间:2023-07-04
- 格式:DOCX
- 页数:15
- 大小:26.11KB
C++概述.docx
《C++概述.docx》由会员分享,可在线阅读,更多相关《C++概述.docx(15页珍藏版)》请在冰豆网上搜索。
C++概述
C++概述
C++简单来讲是在传统面向过程编程的C语言基础上添加了类表示对面向对象语言的支持以及通过C++模板来支持的通用编程。
面向过程编程、面向对象编程和通用编程的概述:
不管是那种计算机语言它们所要处理的东西都是一样的即——数据和算法。
数据是程序使用或者要处理的信息,而算法则是程序在处理数据时所使用的方法或者过程。
面向过程编程
它强调的是编程的算法方面,面向过程编程首先要确定问题解决的一系列的步骤然后再考虑在这一系列的步骤过程中数据应该是什么样子的。
这种编程在处理小型系统和局部问题方向,显得程序清晰度高、可靠性强。
面向对象编程(OOP)
它与面向过程编程刚好相反,它强调的是数据。
在解决问题上它首先考虑问题中数据是如何使用类来表示,这些类之间又有什么关系,然后再考虑具体的流程。
这种编程方式符合我们人类解决问题的思路,常用于复杂大型系统的开发中。
面向对象编程强调了代码重用和使用抽象来对程序进行解耦。
通用编程(genericprogramming)
它与OOP一样都是强调代码重用和抽象通用,不过OOP强调的是编程方面数据的重用,而它则强调的是算法方面的重用。
OOP是一个管理大型工程的工具,而通用编程是提供执行常见任务(例如对数据排序或合并链表等)的工具。
C++中的重要概念:
有了“类”才有面向对象的设计。
“类”是学习C++语言的核心,是学习C++语言的人必须下功夫来攻克的难关。
C语言中没有类,因此,概念上是一个飞跃。
函数的多态,虚拟函数,函数重载,运算符的重载其实都是同一个概念,即同一个函数名或运算符,具有不同的功能。
函数重载和运算符重载是编译器能识别的,因此在编译时将它们变成了不同的函数,所以把重载称为编译时的多态。
而虚拟函数的多态在编译时不能识别,运行时才表现出不同功能,称为运行时的多态。
从模板扩展到标准模板库(STL),使C++语言实用功能一下子增加了许多。
早期C++还不支持的名字空间,这使得C++在发展了几十年后仍能跟上时代潮流。
例外处理是大工程项目必需的功能,也是C语言在开发大项目方面的缺陷之一。
实时类型取得(Run-TimeTypeidentification)和类型强制符(dynamic_cast)更是C语言没有的,此外,在输入出方面C++还增强改进了许多功能。
一、C++与C的不同点
C++增加了C不具有的关键字。
这些关键字能作为函数和变量的标识符在C程序中使用,尽管C++包含了所有的C,但显然没有任何C++编译器能编译这样的C程序。
C程序员可以省略函数原型,而C++不可以,一个不带参数的C函数原型必须把void写出来。
而C++可以使用空参数列表。
C++中new和delete是对内存分配的运算符,取代了C中的malloc和free。
标准C++中的字符串类取代了C标准C函数库
C++中用来做控制态输入输出的iostream类库替代了标准C中的stdio函数库。
1、书写风格
如果没有参数,C语言建议使用void,而C++建议不写。
/*C语言中没有参数的定义(推荐)*/
voidmyFunc(void){
......
}
/*C++语言中没有参数的定义(推荐)*/
voidmyFunc(){
......
}
2、关键字和变量
C++相对与C增加了一些关键字,如下:
typename bool dynamic_cast mutable namespace
static_cast using catch explicit new
virtual operator false private template
volatile const protected this wchar_t
const_cast public throw friend true
reinterpret_cast try bitor xor_e and_eq compl or_eq
not_eq bitand
在C++中还增加了bool型变量和wchar_t型变量:
布尔型变量是有两种逻辑状态的变量,它包含两个值:
真和假。
如果在表达式中使用了布尔型变量,那么将根据变量值的真假而赋予整型值1或0。
要把一个整型变量转换成布尔型变量,如果整型值为0,则其布尔型值为假;反之如果整型值为非0,则其布尔型值为真。
布儿型变量在运行时通常用做标志,比如进行逻辑测试以改变程序流程。
#include "iostream.h"
int main()
{
bool flag;
flag=true;
if(flag) cout<<"true"< return 0; } C++中还包括wchar_t数据类型,wchar_t也是字符类型,但是是那些宽度超过8位的数据类型。 许多外文字符集所含的数目超过256个,char字符类型无法完全囊括。 wchar_t数据类型一般为16位。 标准C++的iostream类库中包括了可以支持宽字符的类和对象。 用wout替代cout即可。 #include "iostream.h" int main() { wchar_t wc; wc='b'; wout< wc='y'; wout< wc='e'; wout< return 0; } 3、变量和函数原型的申明 C语言中函数的原型申明是被建议的,但调用处后面的函数的确可以不申明。 C++中则不论函数定义的先后,必须事先申明。 另一方面,局部变量的定义,C语言要求必须在函数体的开始部分,某一语句之后再定义变量是错误的,而C++则没有这一限制。 //voidmyFunc(void)//C语言中这句省略不出错 myFunc(void) { for(inti=0;i<10;i++)//出错。 定义要放在for前面 { ...... } } intmain(void) { myFunc(); intx=0;//出错。 应放在myFunc();之前 returnx; } //voidmyFunc(void)//C语言中这句省略不出错 myFunc(void) { for(inti=0;i<10;i++)//C++中不出错 { ...... } } intmain(void) { myFunc(); intx=0;//C++中不出错 returnx; } 4、其它不同点 C++语言是C语言扩展而来,C程序自然可以直接使用,但的确仍有一些不同之处。 1.C语言中,字符常量被当作整数,而C++语言中不是,字符常量就当作字符。 这虽然很小,但却是重要的一点。 2.C语言中全局变量多次定义虽不好,却不出错。 C++语言中则出错。 3.C语言命名限制在31个有效字符,C++语言中没有限制,但太长了使用不方便。 4.C语言中不能取寄存器变量的地址,C++语言中可以。 5.C语言中没有bool类型,wchar_t是宏定义,C++语言中,增加了bool基本类型和wchar_t扩展类型。 6.C语言中用结构体定义变量时,“struct结构体名变量名”,在C++中“struct”可以省略。 5、C++语言的新旧版本 C++语言自身也在发展,新旧版本的写法上也有所不同。 名字空间是防止名称冲突而申明的“领域”,打个比方,C盘中文件增多就有可能有相同的文件名,这样我们就必须用目录来管理,将相同文件名放在不同的目录里就可以了。 当目录名逐渐增加,也有重复名称时,一是再增加父目录,另一办法就是将相同目录名放在不同的盘符下。 //旧版本的写法 #include intmain(void) { ...... } //新版本的写法 #include usingnamespacestd;//名字空间是必须的 intmain() { ...... } 6、控制台的输入出 C语言的控制台输入出是用函数来实现的,最常用的是printf()和scanf()函数。 C++语言中一般使用运算符“<<”和“>>”,这比C语言中的函数的功能更强大、更方面,下面只介绍基本使用,更强大的功能要等学完了“类”之后才讲解,这样更容易理解。 C语言中运算符“<<”和“>>”是位操作运算符,C++中仍然有效,而用作输入出时,最前面必须是cin或cout,表示从控制台输入或输出,cin和cout是C++定义好的输入出流。 输出时当需要回车时,可以用“\n”,也可以用“endl”。 #include #include usingnamespacestd; intmain() { inti,j; doubled; strings; i=10; d=123.45; s=""; cout<<"请输入一个整数: "; cin>>j; cout<<"i="< cout<<"j="; cout< cout< cout<<"d="< cout< return0; } 7、强制类型转换 有时候,根据表达式的需要,某个数据需要被当成另外的数据类型来处理,这时,就需要强制编译器把变量或常数由声明时的类型转换成需要的类型。 为此,就要使用强制类型转换说明,格式如下: int* iptr=(int*) &table; 表达式的前缀(int*)就是传统C风格的强制类型转换说明(typecast),又可称为强制转换说明(cast)。 强制转换说明告诉编译器把表达式转换成指定的类型。 有些情况下强制转换是禁用的,例如不能把一个结构类型转换成其他任何类型。 数字类型和数字类型、指针和指针之间可以相互转换。 当然,数字类型和指针类型也可以相互转换,但通常认为这样做是不安全而且也是没必要的。 强制类型转换可以避免编译器的警告。 long int el=123; short i=(int) el; float m=34.56; int i=(int) m; 上面两个都是C风格的强制类型转换,C++还增加了一种转换方式,比较一下上面和下面这个书写方式的不同: long int el=123; short i=int (el); float m=34.56; int i=int (m); 使用强制类型转换的最大好处就是: 禁止编译器对你故意去做的事发出警告。 但是,利用强制类型转换说明使得编译器的类型检查机制失效,这不是明智的选择。 通常,是不提倡进行强制类型转换的。 除非不可避免,如要调用malloc()函数时要用的void型指针转换成指定类型指针。 8、标准输入输出流 在C语言中,输入输出是使用语句scanf()和printf()来实现的,而C++中是使用类来实现的。 #include "iostream.h" main() //C++中main()函数默认为int型,而C语言中默认为void型。 { int a; cout<<"input a number: "; cin>>a; /*输入一个数值*/
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 概述
![提示](https://static.bdocx.com/images/bang_tan.gif)