c++的语言特点

 我来答
真神哥1tJ
2016-05-06 · 超过71用户采纳过TA的回答
知道答主
回答量:190
采纳率:83%
帮助的人:62.4万
展开全部

· C++设计成静态类型、和C同样高效且可移植的多用途程序设计语言。
· C++设计直接的和广泛的支持多种程序设计风格(程序化程序设计、资料抽象化、面向对象程序设计、泛型程序设计)。
· C++设计无需复杂的程序设计环境。
C++语言灵活,运算符的数据结构丰富、具有结构化控制语句、程序执行效率高,而且同时具有高级语言与汇编语言的优点,与其它语言相比 ,可以直接访问物理地址,与汇编语言相比又具有良好的可读性和可移植性。
总得来说,C++语言的主要特点表现在两个方面,一是尽量兼容C,二是支持面向对象的方法。它操持了C的简洁、高效的接近汇编语言等特点,对C的类型系统进行了改革的扩充,因此C++比C更安全,C++的编译系统能检查出更多的类型错误。另外,由于C语言的广泛使用,因而极大的促进了C++的普及和推广。
C++语言最有意义的方面是支持面向对象的特征。虽然与C的兼容使得C++具有双重特点,但他在概念上完全与C不同,更具面向对象的特征。
出于保证语言的简洁和运行高效等方面的考虑,C++的很多特性都是以库(如STL)或其他的形式提供的,而没有直接添加到语言本身里。关于此类话题,Bjarne Stroustrup的《C++语言的设计和演化》(1994)里做了详尽的陈述。
C++引入了面向对象的概念,使得开发人机交互类型的应用程序更为简单、快捷。很多优秀的程序框架包括Boost、Qt、MFC、OWL、wxWidgets、WTL就是使用的C++。 C++由于语言本身复杂。C++的编译系统受到C++的复杂性的影响,非常难于编写,即使能够使用的编译器如果存在问题,可能难于被发现。
由于本身的复杂性,复杂的C++程序的正确性相当难于保证。
C++对于安全性也无法保证,所以,很容易依靠C++编译出病毒来。

qq349081903
2023-05-01
知道答主
回答量:42
采纳率:0%
帮助的人:5473
展开全部
C++语言是对C语言的扩展,是C语言的超集。C语言是 美国贝尔实验室 在1969~1973年开发的,与此同时,还用它开发了UNIX操作系统。C语言又是由B语言衍生而来的,B语言是贝尔实验室的 Ken Thompson 在BCPL语言的基础上开发的,并用它编写了第一个UNIX操作系统。BCPL语言是 英国剑桥大学 的 Martin Richards ,60年代在美国MIT时设计的。
1971年,贝尔实验室的 Dennis Ritchie 扩展了B语言(通过增加类型),他称之为NB,即New B。在更改了B语言的结构,并重写了B语言的编译器后,Ritchie称他的新语言为C。1983年,出现了许多C语言的版本, 美国国家标准化协会(ANSI) 在1989年出版了标准的C语言,称之为ANSI C。
也是在1983年,贝尔实验室的 Bjarne Stroustrup 在C语言的基础上,创建了C++语言,它是为UNIX系统环境设计的。C++语言增强了C语言的能力,使得程序员能够改进编写程序的质量,并易于程序代码的复用。C++语言的ISO标准已在1997年11月被一致通过,1998年8月被正式批准。
C++语言在1980年开始被使用,"C++"这个名字是由Rick Maseitti提出,到1983年夏确定的。C++的创作灵感来源于当时计算机语言多方面的成果,特别是BCPL语言(Basic Combined Programming Language, 它也是C语言的来源之一)和Simula 67语言(以面向对象为核心的语言),同时还借鉴了Algol 68。就如同它的名字表达的那样,C++语言是C语言的一个超集,它是一门混合型的语言,既支持传统的结构化程序设计,又支持面向对象的程序设计,这是C++语言成功流行的一个重要原因。
读者可能产生疑问,既然面向对象的程序设计方法比结构化的程序设计方法先进许多,为什么C++语言仍旧支持后者,而不愿意成为一门纯粹的面向对象的程序设计语言?
实际上,这种做法也是从程序设计语言发展实践中得到的经验。面向对象程序设计的概念提出后,某些公司和机构曾经开发出一些纯面向对象的语言,比如第一个成功的、纯面向对象的程序设计语言的Smalltalk,但是由于广大的程序员不能一下子完全接受面向对象程序设计的思想,不能完全适应面向对象程序设计的技术,这些语言都没有能够广泛的流行起来。事实上,程序员们长期采用结构化的程序设计方法,并从中汲取了许多宝贵经验,形成了巨大的财富,这些财富应该得到继承和发展;而且结构化程序设计方法在小型软件项目的开发设计上仍然很适用,完全否定这种设计方法也是不恰当的。C++作为一门混合型语言,在增加对于面向对象方法的支持的同时,还继承了传统程序设计语言C的优点,克服了其不足之处,使得自身既适用于结构化程序设计,又能满足面向对象程序设计的要求,这就符合广大程序员逐步更新其程序设计观念和方法的要求,因而很快流行起来。总之,对于传统的财富不是完全抛弃,而是继承并发展之,是C++语言成功的重要原因。
C++从C语言发展而来,比C更好, 其优点主要包括:
(1) 与C语言兼容,既支持面向对象的程序设计,也支持结构化的程序设计。同时,熟悉C语言的程序员,能够迅速掌握C++语言。
(2) 修补了C语言中的一些漏洞,提供更好的类型检查和编译时的分析。使得程序员在C++环境下继续写C代码,也能得到直接的好处。
(3) 生成目标程序质量高,程序执行效率高。一般来说,用面向对象的C++编写的程序执行速度与C语言程序不相上下。
(4) 提供了异常处理机制,简化了程序的出错处理。利用throw、try和catch关键字,出错处理程序不必与正常的代码紧密结合,提高了程序的可靠性和可读性。
(5) 函数可以重载及可以使用缺省参数。重载允许相同的函数名具有不同参数表,系统根据参数的个数和类型匹配相应的函数。缺省参数可以使得程序员能够以不同的方法调用同一个函数,并自动对某些缺省参数提供缺省值。
(6) 提供了模板机制。摸板包括类摸板和函数模板两种,它们将数据类型作为参数。对于具体数据类型,编译器自动生成模板类或模板函数,它提供了源代码复用的一种手段。
C++语言对C语言扩充和增强的几点具体体现

C++在增加面向对象的特征之外,还对C语言进行了扩充和增强。主要的增强点有如下几个:
1. 注释
在C语言块注释的形式
/*
Explanation Sentence
*/
的基础上,C++语言提供了一种新的单行注释形式:
//Explanation Sentence
即用"//"表示注释开始,从该位置直到当前行结束的所有字符都被作为注释。
举个简单的例子:

例1-4:
/*
下面的程序段计算从1到100的整数和,
结果记录在变量sum中
*/
sum = 0; //变量sum初值置为零
for(i = 1; i <= 100; i++)
{//循环体开始
sum += i; // 依次累加i
}
2. 更加灵活的变量说明
在传统的C语言中,局部变量的说明必须集中放在执行代码的前面,数据说明语句和执行语句的混合将引起编译错误。而在C++中,可以在程序代码块的任何地方进行局部变量的说明。比如下面的代码在C语言中是不正确的,在C++语言中却可以正常运行。
for(int i = 1; i < = 100; i++);
这样做的好处是使变量的定义和它的使用集中在一起,意义一目了然。
3. 更加严格的函数原型说明
C++摒弃了C语言对函数原型随意简化的方式,这种简化是许多C语言程序错误的根源。C++语言要求编程者为函数提供完整的原型,包括全部参数的类型和返回值得说明。
例如,有字符型和双精度类型两个参数、返回整型值的函数f,原型应该写为:
int f(char, double);
而C语言中允许将这个原型写成"f( );"。
在函数原型说明中,参数名可有可无,并且可以和函数定义中的参数名不一致。
4. 增加了函数重载机制
重载是程序语言领域的重要概念。常规语言中最典型的例子是"+、-、×、/"等各种算术运算符的重载,这些符号可以同时用来表示多种类型数据之间的运算,这种对一个名字或一个符号赋予多重意义的情况就叫重载。
C++语言增加了C语言所没有的函数重载机制。对一个函数名可以给出多个函数定义,只要这些定义可以通过参数个数或类型的不同区别开来即可。
C++还允许对系统中预先定义的运算符号进行重载,增加新的定义。这样做的优点是在今后对新定义类型的变量进行运算时,计算公式写起来方便自然。
5. 函数缺省参数
C++中允许函数有缺省参数。所谓缺省,是指函数调用时可以不给出实际的参数值。下面是一个有缺省参数的函数定义的实例:
例1-5:
int f(int a, int b=1)
{
return a*b;
}
此后,函数调用f(3,1)和f(3)将返回同样的结果。
6. 更加方便的动态存储分配
C++为了提高内存管理上的灵活性,提供了动态内存分配合释放的操作符new和delete,用来增强C语言中原有的函数malloc()和free();
7. 增加了内联函数(Inline Function)
C++提供了内联函数,用以代替C语言中的宏。宏的处理机构是预处理器而不是编译器,它虽然可以提高效率,但是却不能实现函数调用所拥有的参数类型检查等机制。内联函数不但能够象宏那样节约函数调用时保存现场所需的系统开销,提高程序执行效率,还保留了函数进行参数类型检查的机制;并且C++语言中的宏是不能够存取对象私有成员变量的,但是使用内联函数,则没有这一限制。
8. 输入/输出流机制
C++保留了C语言标准库中各种输入/输出函数,而且提供了一套新的输入/输出机制――流机制。
比如向标准输出输出一个字符串:
cout<<"C++ is beautiful!";
或者由标准输入读一个整数,赋给变量a
int a;
cin>>a;
流式输入/输出运算符能够根据变量类型自动确定数据交换过程中的转换方式,还可以定义"<<、>>"的重载,方便了编程者自定义类型的数据的输入/输出。
9. 作用域限定运算符::
作用域限定运算符::用于对当前作用域之外的同名变量进行访问。例如在下面的例子中,我们可以利用::实现在局部变量a的作用域范围内对全局变量a的访问。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
巍然且奇崛的彩旗O
2023-04-01
知道答主
回答量:8
采纳率:0%
帮助的人:1698
展开全部
C++是在C语言基础上进行扩展而来的一门面向对象的程序设计语言。相比其他语言,它具有很多优点和特点的,比如:在性能方面,C++代码被最终编译成本地机器码,可直接由CPU执行,相比Javascript,VBScript等由脚本引擎解析执行的脚本语言,或者Java这类生成中间代码再由虚拟机执行的语言,效率就高了很多。
虽然,汇编语言和C语言的效率更高,但是C++的支持面向对象的特性很好的解决了代码的重用、重构、修改和扩展。C++支持函数重载,比如写一个求和的函数
int
sum(int
a,int
b)
,这个函数只能去整数求和,如果在C语言里,我们要对浮点型数求和,就必须再写一个函数
float
sum2(float
a,float
b),调用的时候,必须根据要求和的数的类型选择调用
sum
还是
sum2;而在C++里,我们可以直接写两个同名的函数
int
sum(int
a,int
b),float
sum(float
a,float
b)调用的时候不管是浮点型还是整型,都直接调用sum,编译器能为我们自动的选择应该调用哪一个函数。
对面向对象的支持,让我们可以将一个功能模块封装成一个类,对于使用这个功能模块的人,只需调用这个类的方法就可以了,不必关心功能如何实现的,这一点可以在开发大型项目的时候提高开发效率,减少开发周期。同时,可以通过对类进行派生来扩展模块的功能,而不影响原有的功能。
C++的异常处理机制可以很好地对代码的异常进行捕捉,保证了在程序运行时出现错误不至于整个崩溃掉,也为我们对于运行时错误的处理提供了一种有效的途径。
C++不像VB和易语言等,把很多东西都封装起来了,对开发者不可见,所以无法理解其深层的原理,C++里很多东西都要程序员自己实现,这也增加了开发难度。
C++程序的依赖性小,不像VB需要很多控件库,java需要java虚拟机,C#、VB.NET需要.net框架支持。对C++代码进行静态连接,就能保证生成的可执行程序在别的电脑上直接运行。
要注意的是,面向对象的程序设计(OOP)是一种编程的方法或者说理念,它不属于C++语言。支持这种设计方面的语言都是面向对象的语言,C++只是其中之一。封装、继承和多态是面向对象程序设计的三大特点,涉及的内容很多,就不多说啦。暂时想到这么多,完全是个人看法,有不对的地方不要怪我哦。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
煞娇滔盗C4
2023-04-26
知道答主
回答量:88
采纳率:100%
帮助的人:1.8万
展开全部
&:在C++中有两种意思,一种是取地址符,是单目运算符;另一种是,表示“”,是双目运算符。a&b表示a和b执行按位。&后跟一个变量。每个变量对应一个存储空间块。每个存储空间都有一个数字,即地址,&变量名表示取出该代码,而变量名表示取出该编号对应的存储空间中的值。系统将在内存中分配一个空间,* a的值是变量a的值;定义一个指向整数数据的指针,效果与&相反,它根据变量的地址获取变量的值,编译时给它分配一个地址,指针指向整数数据。扩展资料:C++语言的特点 :1、简洁紧凑、灵活方便 C++语言只有32个关键字和9个控制语句,该程序可以自由编写,主要以小写字母表示。它结合了的基本结构和陈述以及的实用性。C++语言可以像一样对位,字节和地址进行操作,而这三种语言是计算机的最基本工作单元。2、运算符丰富 C++语言运算符包括34个运算符。 C++语言将括号,赋值,强制转换等视为运算符。C++的操作类型非常丰富,类型多样化,并且可以灵活地使用各种运算符来实现其他高级语言难以实现的操作。参考资料来源:
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式