c++是哪个公司出的

作者&投稿:爱钓 (若有异议请与网页底部的电邮联系)
C语言是哪个公司的产品?~

C语言之所以要起名为“C”,是取的“BCPL”的第二个字母(第一个字母用来命名之前被发明的B语言) 。当C语言发展到顶峰的时刻,出现了一个版本叫C with Class,那就是C++最早的版本,在C语言中增加class关键字和类,那个时候有很多版本的C都希望在C语言中增加类的概念;后来C标准委员会决定为这个版本的C起个新的名字,那个时候征集了很多种名字,最后采纳了其中一个人的意见,以C语言中的++运算符来体现它是C语言的进步,故而叫C++,成立了C++标准委员会。   美国AT&T贝尔实验室的本贾尼·斯特劳斯特卢普(Bjarne Stroustrup)博士在20世纪80年代初期发明并实现了C++(最初这种语言被称作“C with Classes”)。一开始C++是作为C语言的增强版出现的,从给C语言增加类开始,不断的增加新特性。虚函数(virtual function)、运算符重载(operator overloading)、多重继承(multiple inheritance)、模板(template)、异常(exception)、RTTI、命名空间(name space)逐渐被加入标准。1998年国际标准组织(ISO)颁布了C++程序设计语言的国际标准ISO/IEC 1988-1998。C++是具有国际标准的编程语言,通常称作ANSI/ISO C++。1998年是C++标准委员会成立的第一年,以后每5年视实际需要更新一次标准,下一次标准更新原定是在2009年,目前我们一般称该标准C++0x,但是由于对于新特性的争端激烈,除了在Technical Report 1(tr1)中的新增修改被基本确定外,完整的标准还遥遥无期。况且遗憾的是,由于C++语言过于复杂,以及经历了长年的演变,直到现在(2010年)都没有有一个编译器完全符合这个标准。
编辑本段组成部分
  根据Effective C++第三版第一条款的描述,现在C++由以下四个“子语言”组成:   1、C子语言。C++支持C语言的几乎全部功能,主要是c89的部分,在语法上与C语言仅有极微妙的差别(如括号表达式的左右值性,具体请参考C++标准文献)。   2、面向对象的C++语言。C++语言原本不具备面向对象的设计功能,然而随着面向对象编程的概念的提出以及如Java等语言的发展成熟,C++语言也开发出了支持面向对象功能的版本.   3、泛型编程语言。C++强大(但容易失控的)模板功能使它能在编译期完成许多工作,从而大大提高运行期效率。   4、STL(C++标准模板库,Standard Template Library)。随着STL的不断发展,它已经逐渐成为C++程序设计中不可或缺的部分,其效率可能比一般的native代码低些,但是其安全性与规范性使它大受欢迎。   此外,包含在TR1等中的C++0x将实现的新功能在开发和测试中。
编辑本段语言发展
  C++语言发展大概可以分为三个阶段:   第一阶段从80年代到1995年。这一阶段C++语言基本上是传统类型上的面向对象语言,并且凭借着接近C语言的效率,在工业界使用的开发语言中占据了相当大份额;   第二阶段从1995年到2000年,这一阶段由于标准模板库(STL)和后来的Boost等程序库的出现,泛型程序设计在C++中占据了越来越多的比重性。当然,同时由于Java、C#等语言的出现和硬件价格的大规模下降,C++受到了一定的冲击;   第三阶段从2000年至今,由于以Loki、MPL等程序库为代表的产生式编程和模板元编程的出现,C++出现了发展历史上又一个新的高峰,这些新技术的出现以及和原有技术的融合,使C++已经成为当今主流程序设计语言中最复杂的一员。
编辑本段入门书籍
  C++是一种语言,仅仅是它的语法、特性、标准类库就已经是一门非常高深的课程,所以在开始学习的时候,必须先要打好基础。在市面上有很多Visual C++的书,虽然其中可能会花1-2章来介绍C++的基本特性,但是那绝对不会让你入门。因此,初学者学习C++应该选择针对C++语言本身的书籍,而不能是针对Visual C++、MFC或者Windows API的。   学习C++应该由易至难,循序渐进。以前经常有人说学习C++之前应该学习C语言。事实上那不是必须的,C++和C语言虽然有关系,但仍然是两种不同的语言。当然,在学习C++之前学习过其他编程语言是很有好处的。那会使学习C++的速度更快,毕竟很多计算机语言的概念都是相通的。而对于零基础的初学者来说,则是应该静下心来,不要急躁。要成为C++的高手,不是那么容易的,必须要花很大的努力。   从入门教材的选择上,主要看学习者的自身情况。如果已经有过学习高级语言的经历,那么推荐使用谭浩强的《C++程序设计》。注意是04年版的,06年版的那本书是阉割版,上来就面向对象。虽然说C和C++是相似的,但是前面已经说了,C和C++应该作为两种语言来学习,所以06年的那本内容就稍微欠缺一点了。谭浩强04版的这本书内容比较规整的,条理也很清晰。如果有过其他高级语言的基础,那么估计半年就能对C++的概况有个了解了。谭浩强老师的书已经成为了全国各大高等院校的教科书,是比较受到认可的。   如果是从零基础开始学C++,那么推荐使用潘嘉杰的《易学C++》。这本书是2008年出的新书,听说是个学生在读书的时候写的。这本书网上有下载免费的电子版。这本书主要就是针对初学者的,讲得也比较生动有趣,比较提得起学习的兴趣。所以没有基础的初学者选这本书也是不错的,就是想要很快成为高手,可能看这本书还不够。   至于看完入门的书之后,就应该看一些高层次的书了。比如>和>,同时也可以向STL、MFC、API等各个方向发展。如果对别的语言感兴趣,还能去看看C#和Java,它们和C++从语法和很多概念上都是类似的。
编辑本段设计原则
  · C++设计成静态类型、和C同样高效且可移植的多用途程序设计语言。   · C++设计成直接的和广泛的支援多种程序设计风格(程序化程序设计、资料抽象化、面向对象程序设计、泛型程序设计)。   · C++设计成给程序设计者更多的选择,即使可能导致程序设计者选择错误。   · C++设计成尽可能与C兼容,籍此提供一个从C到C++的平滑过渡。   · C++避免平台限定或没有普遍用途的特性。   · C++不使用会带来额外开销的特性。   · C++设计成无需复杂的程序设计环境。   出于保证语言的简洁和运行高效等方面的考虑,C++的很多特性都是以库(如STL)或其他的形式提供的,而没有直接添加到语言本身里。关于此类话题,C++之父的《C++语言的设计和演化》 里做了详尽的陈述。   Hello World程序
在使用兼容C89标准(也称为ANSI C)的编译器时,下面这个程序显示“Hello, world!”然后结束运行:
(事实上这并不是符合98标准[ISO C++]的C++程序,而且在多数编译器上这个程序也不能运行,若要在比较旧的编译器上编译该程序,应将stdio.h改为iostream.h)
#include
int main()
{
printf("Hello, world!
");
return 0;
}
(以上是c语言代码,c++语言是c语言高一级的版本)
在使用兼容C++98标准(ISO/IEC 14882-1998)的编译器时,下面的程序也是可以的:
#include
int main()
{
cout << "Hello, world!" << endl;
return 0;
}
在使用兼容C++ STL的编译器时,应当是:
#include
using namespace std;
int main()
{
cout<<"Hello,world!"<<endl;
return 0;
}
根据ISO C++的规定,main函数的形式只能是
int main(void)
{
...
}
以及
int main(int argc,char * argv[])
{
...
}
尽管如此,但在Visual C++ 2003以前的Microsoft Visual Studio编译器上,
void main()
{
...
}
也被支持,但这并不正确,也不标准。这样的写法会使程序代码丧失跨平台的特性。每年都有专业人士规定C++的语法,这也是C++优于其他编程语言的原因之一,由它衍生的Java已成为通用编程语言中广受欢迎的一种。

编辑本段代码性能
  一般认为,使用Java或C#的开发成本比C++低。但是,如果你能够充分分析C++和这些语言的差别,会发现这句话的成立是有条件的。这个条件就是:软件规模和复杂度都比较小。如果不超过3万行有效代码(不包括生成器产生的代码),这句话基本上还能成立。否则,随着代码量和复杂度的增加,C++的优势将会越来越明显。造成这种差别的就是C++的软件工程性。在Java和C#大谈软件工程的时候,C++实际上已经悄悄地将软件工程性提升到一个前所未有的高度。这一点被多数人忽视,并且被大公司竭力掩盖。   语言在软件工程上的好坏,依赖于语言的抽象能力。从面向过程到面向对象,语言的抽象能力有了一个质的飞跃。但在实践中,人们发现面向对象无法解决所有软件工程中的问题。于是,精英们逐步引入、并拓展泛型编程,解决更高层次的软件工程问题。(实际上,面向对象和泛型编程的起源都可以追溯到1967年,但由于泛型编程更抽象,所以应用远远落后于面向对象)。
编辑本段应用实例
  哪些程序是用C++写的:   主流的3种操作系统Windows内核都是用C语言和汇编写的,上层高级特性是用C++写的。   《魔兽世界》等几乎所有的网络游戏,百度搜索引擎,我们所用的大多数软件都是用C++写的(硬件也有很多用到C++的)。   以下是一些C++的应用:   Amazon:Software for large-scale e-commerce   Apple: OS X is written in a mix of language, but a few important parts are C++(当然最核心的部分都是汇编与c语言).   AT&T:The largest US telecommunications provider.   o provisioning systems   o systems for rapid network recovery after failure   Autodesk: A large number of major number of application in the CAD domain   Ericsson:   o server platform.   o TDMA-CDMA HLR   o GSM-TDMA-CDMA mobility gateway   Google: web search engine, etc。   HP: Here is a tiny fraction of HP's C++ apps:   o C, C++, Fortran90 compilers, and linker for the new HP IA64 platform (these add to more than 1 million lines of C++ code).   IBM:   o OS/400.   o K42: a high performance, open source, general-purpose operating system kernel for cache-coherent multiprocessors.   Intel:   o Vtune performace analysis software   o compilers and optimizers   o lots of chip design and manufacturing software   JPL (Jet Propulsion Lab, NASA): Mars rover autonomous driving system (incl. scene analysis and route planning). C++ on Mars! Also lots of supporting software "on the ground" (i.e. Earth).   Microsoft:   o Windows XP   o Windows NT (NT4 and 2000)   o Windows 9x (95, 98, Me)   o Microsoft Office (Word, Excel, Access, PowerPoint, Outlook)   o Internet Explorer (including Outlook Express)   o Visual Studio   o SQL   Mozilla: Firefox browser and Thunderbird mail client (open source)   MySQL: MySQL Server (about 250,000 lines of C++) and MySQL Cluster. Arguably the world's most popular open source database   Nokia:   o Mobile Communications radio-station/internet bridges: FlexiGGSN (Gateway GPRS Support Node) and FlexiSGSN (Server GPRS Support Node).   o MSC/HLR   Sun: o The HotSpot Java Virtual Machine is written in C++   Symbian OS: rationale: "[...] using C++ for all system code, from the kernel upwards." This is one of the most widespread OS's for cellular phones   KDE from linux is written in C++.   telephone systems: I think it would be almost easier to list the systems which aren't written in C++   C++写出的软件,还包括   VLC, 著名的开源视频播放器;   LAMMPS,著名分子动力学模拟软件,其中包括一部分Fortran代码;
编辑本段编程技巧
使用new和delete进行动态内存分配和释放
     运算符new和delete是C++新增的运算符,提供了存储的动态分配和释放功能。它的作用相当于C语言的函数malloc()和free(),但是性能更为优越。使用new较之使用malloc()有以下的几个优点:   (1)new自动计算要分配类型的大小,不使用sizeof运算符,比较省事,可以避免错误。   (2)自动地返回正确的指针类型,不用进行强制指针类型转换。   (3)可以用new对分配的对象进行初始化。   使用例子:   (1)int* p;   p=new int[10]; //分配一个含有10个整数的整形数组   delete[] p; //删除这个数组   (2)int* p;   p=new int (100);//动态分配一个整数并初始化
使用inline内联函数替代宏调用
  对于频繁使用的函数,C语言建议使用宏调用代替函数调用以加快代码执行,减少调用开销。但是宏调用有许多的弊端,可能引起不期望的副作用。例如宏:#define abs(a)(a)<0?(-a):(a)),当使用abs(i++)时,这个宏就会出错。   所以在C++中应该使用inline内联函数替代宏调用,这样既可达到宏调用的目的,又避免了宏调用的弊端。   使用内联函数只须把inline关键字放在函数返回类型的前面。例如:   inline int Add(int a,int b);//声明Add()为内联函数   这样编译器在遇到Add()函数时,就不再进行函数调用,而是直接嵌入函数代码以加快程序的执行。
使用函数重载
  在C语言中,两个函数的名称不能相同,否则会导致编译错误。而在C++中,函数名相同而参数数据类型不同的两个函数被解释为重载。例如:   void PutHz(char* str);//在当前位置输出汉字   void PutHz(int x,?int y,?char * str);//在x,y处输入数字   使用函数重载可以帮助程序员处理更多的复杂问题,避免了使用诸如intabs()、fabs()、dabs()等繁杂的函数名称;同时在大型程序中,使函数名易于管理和使用,而不必绞尽脑汁地去处理函数名。同时必须注意,参数数据类型相同,但是函数返回类型不同的两个函数不能重载。
用引用(reference)代替指针进行参数传递
  在C语言中,如果一个函数需要修改用作参数的变量值的时候 ,参数应该声明为指针类型。例如:   void Add(int *a)   {   (*a)++;   }   调用时则使用   Add(&x); //其中x为int或可以转化为int的类型,如unsigned int, 但这时候编译器通常会给出warning   对于复杂的程序,使用指针容易出错,程序也难以读懂。在C++中,对于上述情况 可以使用引用来代替指针,使程序更加清晰易懂。引用就是对变量取的一个别名,对引用进行操作,这就相当于对原有变量进行操作。例如使用引用的函数定义为:   void Add(int& a)   {   a++; //a为一个整数的引用   }   调用时使用   Add(x); //其中x为int   这个函数与使用指针的上一个函数的功能是一样的,然而代码却更为简洁和清晰易懂。
使用缺省参数
  在C++中函数可以使用缺省参数,例如:   void PutHzxy(char *str,int x=-1, int y=-1)   {   if(x==-1)   x=wherex();   if(y==-1)   x=wherex();   moveto(x,y);   PutHx(str);   }   可以有三种方式调用函数PutHzxy(),例如:   PutHzxy("C++语言");//使用缺省参数,在当前位置输出   PutHzxy("C++语言",10,10);//没有使用缺省参数   PutHzxy("C++语言",10);//对y使用缺省参数,指定x的位置   通常的情况下,一个函数应该具有尽可能大的灵活性。使用缺省参数为程序员处理更大的复杂性和灵活性问题提供了有效的方法,所以在C++的代码中都大量地使用了缺省参数。   需要说明的是,所有的缺省参数必须出现在不缺省参数的右边。亦即,一旦开始定义缺省参数,就不可再说明非缺省的参数。否则当你省略其中一个参数的时候,编译器无法知道你是自定义了这个参数还是利用了缺省参数而定义了非缺省的参数。   例如:    void PutHzxy(char*str,int x=-1,int y=-1)//正确   void PutHzxy(int x=-1,int y=-1,char*str)//错误
使用STL
  STL(Standard Template Library,标准模板库), STL的代码从广义上讲分为三类:algorithm(算法)、container(容器)和iterator(迭代器),并包括一些工具类如auto_ptr。几乎所有的代码都采用了模板类和模版函数的方式,这相比于传统的由函数和类组成的库来说提供了更好的代码重用机会。   #include// 包含相关的头文件/   typedef std::vector intvector;//使用typedef 使代码看起来更简洁   int main()   {   intvector vi;   for(int i=0;i<10,i++)   vi.push_back(i);//使用push_back添加元素   for(int i=0;i<vi.size();i++)   std::cout<<vi[i]<<" ";//[]操作符被重载,使得我们可以像访问数组一样访问vector中的元素   }
编辑本段开发方式
  在unix世界有大量的程序员是传统的非IDE的方式进行软件开发。一般是如下组合:   1.编译器:gcc,clang等   2.编辑器:一般是vim/emacs   3.make:gnu make 或者bsd 的pmake等,功能与用法基本一样   4.版本管理:cvs,svn,git等   5.代码阅读:cscope,ctags,lxr等
编辑本段开发环境
  1.Visual Studio(Visual C++)    2.Borland C++ Builder   3.Eclipse(Myln + CDT + Mingw32 + GCC)   4.Dev-C++(Mingw32 + GCC)   5.Code::Blocks(可配合多款编译核心使用)   6.Codelite   7.C-Free    如上所示,目前流行的GNU GCC和微软的Visual Studio系列各执一套基本的编译链,其他的IDE都是衍生产品

C++是一门比较难学的开发语言,现在从远标科技就业来说,C++前景是不错的,很多企业都在招C++工程师。

C语言之所以要起名为“C”,是取的“BCPL”的第二个字母(第一个字母用来命名之前被发明的B语言) 。当C语言发展到顶峰的时刻,出现了一个版本叫C with Class,那就是C++最早的版本,在C语言中增加class关键字和类,那个时候有很多版本的C都希望在C语言中增加类的概念;后来C标准委员会决定为这个版本的C起个新的名字,那个时候征集了很多种名字,最后采纳了其中一个人的意见,以C语言中的++运算符来体现它是C语言的进步,故而叫C++,成立了C++标准委员会。   美国AT&T贝尔实验室的本贾尼·斯特劳斯特卢普(Bjarne Stroustrup)博士在20世纪80年代初期发明并实现了C++(最初这种语言被称作“C with Classes”)。一开始C++是作为C语言的增强版出现的,从给C语言增加类开始,不断的增加新特性。虚函数(virtual function)、运算符重载(operator overloading)、多重继承(multiple inheritance)、模板(template)、异常(exception)、RTTI、命名空间(name space)逐渐被加入标准。1998年国际标准组织(ISO)颁布了C++程序设计语言的国际标准ISO/IEC 1988-1998。C++是具有国际标准的编程语言,通常称作ANSI/ISO C++。1998年是C++标准委员会成立的第一年,以后每5年视实际需要更新一次标准,下一次标准更新原定是在2009年,目前我们一般称该标准C++0x,但是由于对于新特性的争端激烈,除了在Technical Report 1(tr1)中的新增修改被基本确定外,完整的标准还遥遥无期。况且遗憾的是,由于C++语言过于复杂,以及经历了长年的演变,直到现在(2010年)都没有有一个编译器完全符合这个标准。
编辑本段组成部分
  根据Effective C++第三版第一条款的描述,现在C++由以下四个“子语言”组成:   1、C子语言。C++支持C语言的几乎全部功能,主要是c89的部分,在语法上与C语言仅有极微妙的差别(如括号表达式的左右值性,具体请参考C++标准文献)。   2、面向对象的C++语言。C++语言原本不具备面向对象的设计功能,然而随着面向对象编程的概念的提出以及如Java等语言的发展成熟,C++语言也开发出了支持面向对象功能的版本.   3、泛型编程语言。C++强大(但容易失控的)模板功能使它能在编译期完成许多工作,从而大大提高运行期效率。   4、STL(C++标准模板库,Standard Template Library)。随着STL的不断发展,它已经逐渐成为C++程序设计中不可或缺的部分,其效率可能比一般的native代码低些,但是其安全性与规范性使它大受欢迎。   此外,包含在TR1等中的C++0x将实现的新功能在开发和测试中。
编辑本段语言发展
  C++语言发展大概可以分为三个阶段:   第一阶段从80年代到1995年。这一阶段C++语言基本上是传统类型上的面向对象语言,并且凭借着接近C语言的效率,在工业界使用的开发语言中占据了相当大份额;   第二阶段从1995年到2000年,这一阶段由于标准模板库(STL)和后来的Boost等程序库的出现,泛型程序设计在C++中占据了越来越多的比重性。当然,同时由于Java、C#等语言的出现和硬件价格的大规模下降,C++受到了一定的冲击;   第三阶段从2000年至今,由于以Loki、MPL等程序库为代表的产生式编程和模板元编程的出现,C++出现了发展历史上又一个新的高峰,这些新技术的出现以及和原有技术的融合,使C++已经成为当今主流程序设计语言中最复杂的一员。
编辑本段入门书籍
  C++是一种语言,仅仅是它的语法、特性、标准类库就已经是一门非常高深的课程,所以在开始学习的时候,必须先要打好基础。在市面上有很多Visual C++的书,虽然其中可能会花1-2章来介绍C++的基本特性,但是那绝对不会让你入门。因此,初学者学习C++应该选择针对C++语言本身的书籍,而不能是针对Visual C++、MFC或者Windows API的。   学习C++应该由易至难,循序渐进。以前经常有人说学习C++之前应该学习C语言。事实上那不是必须的,C++和C语言虽然有关系,但仍然是两种不同的语言。当然,在学习C++之前学习过其他编程语言是很有好处的。那会使学习C++的速度更快,毕竟很多计算机语言的概念都是相通的。而对于零基础的初学者来说,则是应该静下心来,不要急躁。要成为C++的高手,不是那么容易的,必须要花很大的努力。   从入门教材的选择上,主要看学习者的自身情况。如果已经有过学习高级语言的经历,那么推荐使用谭浩强的《C++程序设计》。注意是04年版的,06年版的那本书是阉割版,上来就面向对象。虽然说C和C++是相似的,但是前面已经说了,C和C++应该作为两种语言来学习,所以06年的那本内容就稍微欠缺一点了。谭浩强04版的这本书内容比较规整的,条理也很清晰。如果有过其他高级语言的基础,那么估计半年就能对C++的概况有个了解了。谭浩强老师的书已经成为了全国各大高等院校的教科书,是比较受到认可的。   如果是从零基础开始学C++,那么推荐使用潘嘉杰的《易学C++》。这本书是2008年出的新书,听说是个学生在读书的时候写的。这本书网上有下载免费的电子版。这本书主要就是针对初学者的,讲得也比较生动有趣,比较提得起学习的兴趣。所以没有基础的初学者选这本书也是不错的,就是想要很快成为高手,可能看这本书还不够。   至于看完入门的书之后,就应该看一些高层次的书了。比如<<The C++ Programming Language>>和<<C++ Primer>>,同时也可以向STL、MFC、API等各个方向发展。如果对别的语言感兴趣,还能去看看C#和Java,它们和C++从语法和很多概念上都是类似的。
编辑本段设计原则
  · C++设计成静态类型、和C同样高效且可移植的多用途程序设计语言。   · C++设计成直接的和广泛的支援多种程序设计风格(程序化程序设计、资料抽象化、面向对象程序设计、泛型程序设计)。   · C++设计成给程序设计者更多的选择,即使可能导致程序设计者选择错误。   · C++设计成尽可能与C兼容,籍此提供一个从C到C++的平滑过渡。   · C++避免平台限定或没有普遍用途的特性。   · C++不使用会带来额外开销的特性。   · C++设计成无需复杂的程序设计环境。   出于保证语言的简洁和运行高效等方面的考虑,C++的很多特性都是以库(如STL)或其他的形式提供的,而没有直接添加到语言本身里。关于此类话题,C++之父的《C++语言的设计和演化》 里做了详尽的陈述。   Hello World程序
在使用兼容C89标准(也称为ANSI C)的编译器时,下面这个程序显示“Hello, world!”然后结束运行:
(事实上这并不是符合98标准[ISO C++]的C++程序,而且在多数编译器上这个程序也不能运行,若要在比较旧的编译器上编译该程序,应将stdio.h改为iostream.h)
#include <stdio.h>
int main()
{
printf("Hello, world!\n");
return 0;
}
(以上是c语言代码,c++语言是c语言高一级的版本)
在使用兼容C++98标准(ISO/IEC 14882-1998)的编译器时,下面的程序也是可以的:
#include <iostream.h>
int main()
{
cout << "Hello, world!" << endl;
return 0;
}
在使用兼容C++ STL的编译器时,应当是:
#include <iostream>
using namespace std;
int main()
{
cout<<"Hello,world!"<<endl;
return 0;
}
根据ISO C++的规定,main函数的形式只能是
int main(void)
{
...
}
以及
int main(int argc,char * argv[])
{
...
}
尽管如此,但在Visual C++ 2003以前的Microsoft Visual Studio编译器上,
void main()
{
...
}
也被支持,但这并不正确,也不标准。这样的写法会使程序代码丧失跨平台的特性。每年都有专业人士规定C++的语法,这也是C++优于其他编程语言的原因之一,由它衍生的Java已成为通用编程语言中广受欢迎的一种。

编辑本段代码性能
  一般认为,使用Java或C#的开发成本比C++低。但是,如果你能够充分分析C++和这些语言的差别,会发现这句话的成立是有条件的。这个条件就是:软件规模和复杂度都比较小。如果不超过3万行有效代码(不包括生成器产生的代码),这句话基本上还能成立。否则,随着代码量和复杂度的增加,C++的优势将会越来越明显。造成这种差别的就是C++的软件工程性。在Java和C#大谈软件工程的时候,C++实际上已经悄悄地将软件工程性提升到一个前所未有的高度。这一点被多数人忽视,并且被大公司竭力掩盖。   语言在软件工程上的好坏,依赖于语言的抽象能力。从面向过程到面向对象,语言的抽象能力有了一个质的飞跃。但在实践中,人们发现面向对象无法解决所有软件工程中的问题。于是,精英们逐步引入、并拓展泛型编程,解决更高层次的软件工程问题。(实际上,面向对象和泛型编程的起源都可以追溯到1967年,但由于泛型编程更抽象,所以应用远远落后于面向对象)。
编辑本段应用实例
  哪些程序是用C++写的:   主流的3种操作系统Windows内核都是用C语言和汇编写的,上层高级特性是用C++写的。   《魔兽世界》等几乎所有的网络游戏,百度搜索引擎,我们所用的大多数软件都是用C++写的(硬件也有很多用到C++的)。   以下是一些C++的应用:   Amazon:Software for large-scale e-commerce   Apple: OS X is written in a mix of language, but a few important parts are C++(当然最核心的部分都是汇编与c语言).   AT&T:The largest US telecommunications provider.   o provisioning systems   o systems for rapid network recovery after failure   Autodesk: A large number of major number of application in the CAD domain   Ericsson:   o server platform.   o TDMA-CDMA HLR   o GSM-TDMA-CDMA mobility gateway   Google: web search engine, etc。   HP: Here is a tiny fraction of HP's C++ apps:   o C, C++, Fortran90 compilers, and linker for the new HP IA64 platform (these add to more than 1 million lines of C++ code).   IBM:   o OS/400.   o K42: a high performance, open source, general-purpose operating system kernel for cache-coherent multiprocessors.   Intel:   o Vtune performace analysis software   o compilers and optimizers   o lots of chip design and manufacturing software   JPL (Jet Propulsion Lab, NASA): Mars rover autonomous driving system (incl. scene analysis and route planning). C++ on Mars! Also lots of supporting software "on the ground" (i.e. Earth).   Microsoft:   o Windows XP   o Windows NT (NT4 and 2000)   o Windows 9x (95, 98, Me)   o Microsoft Office (Word, Excel, Access, PowerPoint, Outlook)   o Internet Explorer (including Outlook Express)   o Visual Studio   o SQL   Mozilla: Firefox browser and Thunderbird mail client (open source)   MySQL: MySQL Server (about 250,000 lines of C++) and MySQL Cluster. Arguably the world's most popular open source database   Nokia:   o Mobile Communications radio-station/internet bridges: FlexiGGSN (Gateway GPRS Support Node) and FlexiSGSN (Server GPRS Support Node).   o MSC/HLR   Sun: o The HotSpot Java Virtual Machine is written in C++   Symbian OS: rationale: "[...] using C++ for all system code, from the kernel upwards." This is one of the most widespread OS's for cellular phones   KDE from linux is written in C++.   telephone systems: I think it would be almost easier to list the systems which aren't written in C++   C++写出的软件,还包括   VLC, 著名的开源视频播放器;   LAMMPS,著名分子动力学模拟软件,其中包括一部分Fortran代码;
编辑本段编程技巧
使用new和delete进行动态内存分配和释放
     运算符new和delete是C++新增的运算符,提供了存储的动态分配和释放功能。它的作用相当于C语言的函数malloc()和free(),但是性能更为优越。使用new较之使用malloc()有以下的几个优点:   (1)new自动计算要分配类型的大小,不使用sizeof运算符,比较省事,可以避免错误。   (2)自动地返回正确的指针类型,不用进行强制指针类型转换。   (3)可以用new对分配的对象进行初始化。   使用例子:   (1)int* p;   p=new int[10]; //分配一个含有10个整数的整形数组   delete[] p; //删除这个数组   (2)int* p;   p=new int (100);//动态分配一个整数并初始化
使用inline内联函数替代宏调用
  对于频繁使用的函数,C语言建议使用宏调用代替函数调用以加快代码执行,减少调用开销。但是宏调用有许多的弊端,可能引起不期望的副作用。例如宏:#define abs(a)(a)<0?(-a):(a)),当使用abs(i++)时,这个宏就会出错。   所以在C++中应该使用inline内联函数替代宏调用,这样既可达到宏调用的目的,又避免了宏调用的弊端。   使用内联函数只须把inline关键字放在函数返回类型的前面。例如:   inline int Add(int a,int b);//声明Add()为内联函数   这样编译器在遇到Add()函数时,就不再进行函数调用,而是直接嵌入函数代码以加快程序的执行。
使用函数重载
  在C语言中,两个函数的名称不能相同,否则会导致编译错误。而在C++中,函数名相同而参数数据类型不同的两个函数被解释为重载。例如:   void PutHz(char* str);//在当前位置输出汉字   void PutHz(int x,?int y,?char * str);//在x,y处输入数字   使用函数重载可以帮助程序员处理更多的复杂问题,避免了使用诸如intabs()、fabs()、dabs()等繁杂的函数名称;同时在大型程序中,使函数名易于管理和使用,而不必绞尽脑汁地去处理函数名。同时必须注意,参数数据类型相同,但是函数返回类型不同的两个函数不能重载。
用引用(reference)代替指针进行参数传递
  在C语言中,如果一个函数需要修改用作参数的变量值的时候 ,参数应该声明为指针类型。例如:   void Add(int *a)   {   (*a)++;   }   调用时则使用   Add(&x); //其中x为int或可以转化为int的类型,如unsigned int, 但这时候编译器通常会给出warning   对于复杂的程序,使用指针容易出错,程序也难以读懂。在C++中,对于上述情况 可以使用引用来代替指针,使程序更加清晰易懂。引用就是对变量取的一个别名,对引用进行操作,这就相当于对原有变量进行操作。例如使用引用的函数定义为:   void Add(int& a)   {   a++; //a为一个整数的引用   }   调用时使用   Add(x); //其中x为int   这个函数与使用指针的上一个函数的功能是一样的,然而代码却更为简洁和清晰易懂。
使用缺省参数
  在C++中函数可以使用缺省参数,例如:   void PutHzxy(char *str,int x=-1, int y=-1)   {   if(x==-1)   x=wherex();   if(y==-1)   x=wherex();   moveto(x,y);   PutHx(str);   }   可以有三种方式调用函数PutHzxy(),例如:   PutHzxy("C++语言");//使用缺省参数,在当前位置输出   PutHzxy("C++语言",10,10);//没有使用缺省参数   PutHzxy("C++语言",10);//对y使用缺省参数,指定x的位置   通常的情况下,一个函数应该具有尽可能大的灵活性。使用缺省参数为程序员处理更大的复杂性和灵活性问题提供了有效的方法,所以在C++的代码中都大量地使用了缺省参数。   需要说明的是,所有的缺省参数必须出现在不缺省参数的右边。亦即,一旦开始定义缺省参数,就不可再说明非缺省的参数。否则当你省略其中一个参数的时候,编译器无法知道你是自定义了这个参数还是利用了缺省参数而定义了非缺省的参数。   例如:    void PutHzxy(char*str,int x=-1,int y=-1)//正确   void PutHzxy(int x=-1,int y=-1,char*str)//错误
使用STL
  STL(Standard Template Library,标准模板库), STL的代码从广义上讲分为三类:algorithm(算法)、container(容器)和iterator(迭代器),并包括一些工具类如auto_ptr。几乎所有的代码都采用了模板类和模版函数的方式,这相比于传统的由函数和类组成的库来说提供了更好的代码重用机会。   #include<vector>// 包含相关的头文件/   typedef std::vector<int> intvector;//使用typedef 使代码看起来更简洁   int main()   {   intvector vi;   for(int i=0;i<10,i++)   vi.push_back(i);//使用push_back添加元素   for(int i=0;i<vi.size();i++)   std::cout<<vi[i]<<" ";//[]操作符被重载,使得我们可以像访问数组一样访问vector中的元素   }
编辑本段开发方式
  在unix世界有大量的程序员是传统的非IDE的方式进行软件开发。一般是如下组合:   1.编译器:gcc,clang等   2.编辑器:一般是vim/emacs   3.make:gnu make 或者bsd 的pmake等,功能与用法基本一样   4.版本管理:cvs,svn,git等   5.代码阅读:cscope,ctags,lxr等
编辑本段开发环境
  1.Visual Studio(Visual C++)    2.Borland C++ Builder   3.Eclipse(Myln + CDT + Mingw32 + GCC)   4.Dev-C++(Mingw32 + GCC)   5.Code::Blocks(可配合多款编译核心使用)   6.Codelite   7.C-Free    如上所示,目前流行的GNU GCC和微软的Visual Studio系列各执一套基本的编译链,其他的IDE都是衍生产品

C++,这个词在中国大陆的程序员圈子中通常被读做“C加加”,而西方的程序员通常读做“C plus plus”,它是一种使用非常广泛的计算机编程语言。C++是一种静态数据类型检查的,支持多重编程范式的通用程序设计语言。它支持过程化程序设计、数据抽象、面向对象程序设计、制作图标等等泛型程序设计等多种程序设计风格。

美国AT&T贝尔实验室的本贾尼·斯特劳斯特卢普(Bjarne Stroustrup)博士在20世纪80年代初期发明并实现了C++(最初这种语言被称作“C with Classes”)。一开始C++是作为C语言的增强版出现的,从给C语言增加类开始,不断的增加新特性。虚函数(virtual function)、运算符重载(operator overloading)、多重继承(multiple inheritance)、模板(template)、异常(exception)、RTTI、名字空间(name space)逐渐被加入标准。1998年国际标准组织(ISO)颁布了C++程序设计语言的国际标准ISO/IEC 14882-1998。C++是具有国际标准的编程语言,通常称作 ANSI/ISO C++。1998年是C++标准委员会成立的第一年,以后每5年视实际需要更新一次标准,下一次标准更新将是在2009年,目前我们一般称该标准C++0x。遗憾的是,由于C++语言过于复杂,以及他经历了长年的演变,直到现在(2004年)只有少数几个编译器完全符合这个标准(这么说也是不完全正确的,事实上,至今为止没有任何一款编译器完全支持ISO C++)。

另外,就目前学习C++而言,可以认为他是一门独立的语言;他并不依赖C语言,我们可以完全不学C语言,而直接学习C++。根据《C++编程思想》(Thinking in C++)一书所评述的,C++与C的效率往往相差在正负5%之间。所以有人认为在大多数场合C++ 完全可以取代C语言(然而我们在单片机等需要谨慎利用空间、直接操作硬件的地方还是要使用C语言)。

C++不是公司出的,C++与C一样是语言,编程语言,是C的延续,他是很多人一齐工作努力的成果,不是一两个公司可以出产的;写C++代码可以用很多工具,如记事本,用得最多的是C++ Builder与微软公司的Microsoft Visual C++ 工具软件;记住VC++或C++Builder都是用来编译C++代码的工具,他们分才公司出产!

语言的发展是一个逐步地进的过程,C++是直接从C语言发展过来的,而C语言是从B语言发展过来的,B语言是BCPL的一个解释性后代,BCPL是Basic CPL。其中最有趣的是CPL中C的由来,由于当时这个语言是剑桥大学和伦敦大学合作开发的,在伦敦的人员加入之前,C表示剑桥,伦敦人员加入之后,C表示Combined组合。还有一种非正式的说法,C表示Christopher,因为Christopher是CPL背后的主要动力。
最初导致C++诞生的原因是在Bjarne博士等人试图去分析UNIX的内核的时候,这项工作开始于1979年4月,当时由于没有合适的工具能够有效的分析由于内核分布而造成的网络流量,以及怎样将内核模块化。同年10月,Bjarne博士完成了一个可以运行的预处理程序,称之为Cpre,它为C加上了类似Simula的类机制。在这个过程中,Bjarne博士开始思考是不是要开发一种新的语言,当时贝尔实验室对这个想法很感兴趣,就让Bjarne博士等人组成一个开发小组,专门进行研究。
当时不是叫做C++,而是C with class,这是把它当作一种C语言的有效扩充。由于当时C语言在编程界居于老大的地位,要想发展一种新的语言,最强大的竞争对手就是C语言,所以当时有两个问题最受关注:C++要在运行时间、代码紧凑性和数据紧凑性方面能够与C语言相媲美,但是还要尽量避免在语言应用领域的限制。在这种情况下,一个很自然的想法就是让C++从C语言继承过来,但是我们的Bjarne博士更具有先见之明,他为了避免受到C语言的局限性,参考了很多的语言,例如:从Simula继承了类的概念,从Algol68继承了运算符重载、引用以及在任何地方声明变量的能力,从BCPL获得了//注释,从Ada得到了模板、名字空间,从Ada、Clu和ML取来了异常。

下面让我们来一起看一下C++历史上的主要事件:
1983年8月, 第一个C++实现投入使用(所以我喜欢说1983年C++开了天界)
1983年12月,Rick Mascitti建议命名为CPlusPlus,即C++。
1985年2月, 第一个C++ Release E发布。
10月,CFront的第一个商业发布,CFront Release 1.0。
10月,Bjarne博士完成了经典巨著The C++ Programming Language第一版
1986年11月,C++第一个商业移植CFront 1.1,Glockenspiel。
1987年2月, CFront Release 1.2发布。
11月,第一个USENIX C++会议在新墨西哥州举行。
1988年10月,第一次USENIX C++实现者工作会议在科罗拉多州举行。
1989年12月,ANSI X3J16在华盛顿组织会议。
1990年3月, 第一次ANSI X3J16技术会议在新泽西州召开.
5月, C++的又一个传世经典ARM诞生。
7月, 模板被加入。
11月,异常被加入。
1991年6月, The C++ Programming Language第二版完成。
6月, 第一次ISO WG21会议在瑞典召开。
10月,CFront Release 3.0发布。
1993年3月, 运行时类型识别在俄勒冈州被加入。
7月, 名字空间在德国慕尼黑被加入。
1994年8月, ANSI/ISO委员会草案登记。
1997年7月, The C++ Programming Language第三版完成。
10月,ISO标准通过表决被接受
1998年11月,ISO标准被批准。

C++不是哪个公司出的,是一个人创建的!

美国AT&T贝尔实验室的本贾尼·斯特劳斯特卢普(Bjarne Stroustrup)博士在20世纪80年代初期发明并实现了C++(最初这种语言被称作“C with Classes”)。一开始C++是作为C语言的增强版出现的,从给C语言增加类开始,不断的增加新特性。

Microsoft Visual C++ 的简称是VC,是微软出的!


“熊出没”是哪个公司的产品?
《熊出没》由华强数字动漫有限公司出品的104集动画片。《熊出没》作为央视少儿频道春节特别节目于2012年1月22日除夕夜19:50热闹开播,当晚连续播出10集,之后每晚9点到10点六集连播,陪伴全国小观众一起开心过大年。该片用夸张的卡通手法讲述森林保护者熊兄弟与破坏森林、采伐原木、并占领土地开发创业实验...

实况足球哪个游戏公司出的,简单介绍下那公司
尽管KONAMI有着强劲的经济实力,然而在技术力上却是先天不足,在这场新革命中KONAMI受到不小的冲击,1994至1995期间该公司出现了第一次运营亏损,1995年总计每股净损失达4美元。其后KONAMI开始重新部署战略计划,其所出产游戏渐渐从射击类为重点转为体育及动作类等游戏。进入2000年之后,KONAMI再次焕发了惊人...

杨戬电影是哪个电影公司出品
杨戬电影是北京天影电影公司出品。《杨戬》是由北京天影影业有限公司出品,殷玉麒执导,胡明一担任总制片人的动画电影。二郎神杨戬之母不顾天庭戒律,与凡人生下子女,后被天庭捉拿压于桃山之下,哮天犬伴随杨戬一生,历经磨难,最终协助杨戬消灭九大金乌拯救苍生。剧情简介:商周之战一千五百年后,天界衰落,...

加勒比海盗是哪个影片公司的作品?
所以从中可以看出之所以有那么多的人都非常喜欢看这个系列的电影,确实是有一定道理的。加勒比海盗是迪士尼电影公司出品的,这个影片公司是非常厉害的,在国际上是非常出名的,出的每一部电影都是非常精彩的,所以从中可以看出这个电影公司对电影是非常注重的,是根本不允许拍摄很差的电影的,但我觉得这是...

dota2是哪个公司的?
1.dota2是VALVE(就是出cs那个公司)是大名鼎鼎的DOTA的后续之作DOTA2的开发商和运营商。2.著名的冰蛙(IceFrog)也成为了VALVE的一名员工。DOTA2整个游戏将会保持原有风格不变。从某种程度上来说,DOTA2是现有DOTA的技术升级版。DOTA中的100多位英雄正在逐步的移植到DOTA2中。以上就是对dota2是哪个公...

滴滴出行是哪个公司的
1、滴滴出行是滴滴出行科技有限公司的。2、3、滴滴出行是涵盖出租车、专车、滴滴快车、顺风车、代驾及大巴等多项业务在内的一站式出行平台,2015年9月9日由滴滴打车更名而来。2019年8月19日,滴滴出行开始在广州上线网约车开放平台,接入第三方服务商如祺出行。4、5、滴滴出行App改变传统打车方式,建立...

ps软件属于哪个公司的?
Adobe Photoshop,简称“PS”,是由美国Adobe公司开发和发行的图像处理软件。Photoshop主要处理以像素所构成的数字图像。使用其众多的编修与绘图工具,可以有效地进行图片编辑工作。ps有很多功能,在图像、图形、文字、视频、出版等各方面都有涉及。想学ps在这儿;...

金六福是哪个公司的产品?
现在,金六福酒共有两个酿造酒厂或者说产地:一个是宜宾五粮液酒厂,另一个是四川邛崃金六福酒厂,两个酒厂都生产金六福酒,所以金六福酒有四川宜宾和四川邛崃两个产地。简介 金六福酒业销售有限公司诞生于1996年。自成立以来,凭借先进的营销模式,与中国白酒行业龙头五粮液集团强强联手,现已发展成为国内最好的...

熊出没哪个上市公司
熊出没出品方华强文化新三板挂牌上市。深圳华强数字动漫有限公司制作的原创动画系列,该动画系列用夸张的卡通手法讲述森林保护者熊大,熊二与光头强之间上演的一幕幕搞笑对决。熊出没剧情介绍:宁静祥和的东北原始森林,空气清新,万物复苏。熊大和熊二两兄弟在林间追逐奔跑,快乐非常。正在此时,发动机的轰鸣打破...

红色警戒是哪个公司的产品
红色警戒(ra)制作分两个公司,原来的ra原版是westwood(西木)公司出厂,后来ra2刚出来,westwood就被ea(电子艺术)收购了,ra2的尤里版就是ea出的,现在的ra3就是ea出的。出场关卡:盟军第4关:古墓奇袭。盟军第5关:纽澳复制战。盟军第6关:万圣节。盟军第7关:脑死。苏联第2关:似曾相识(...

衡阳县15732942562: C++(计算机程序设计语言) - 搜狗百科
茅龚可益: 美国AT&T贝尔实验室的本贾尼·斯特劳斯特卢普(Bjarne Stroustrup)博士在20世纪80年代初期发明并实现了C++(最初这种语言被称作“C with Classes”). C#(读做 "C sharp",中文译音暂时没有.专业人士一般读"C sharp",现在很多非专业一般读"C井".C#是微软公司发布的一种面向对象的、运行于.NET Framework之上的高级程序设计语言. 现在C++的编程软件很多,C++ BUILDER和VC++是最著名的! C#是微软出的,说以C#只能以.NET为平台!

衡阳县15732942562: c++的出品公司是哪个公司··· -
茅龚可益: c++是由一个外国人设计的(名字忘了,他写了本书叫>,是最好的C++书),它没有版权,也不像Java那样是专利产品.后来经过无数人的改进,出现了很多版本的C++,在1997年由ISO标准化.现在几乎所有的编译器都会尽量遵从这个标准,但几乎都不能完全符合.

衡阳县15732942562: C++是微软发明的吗?为什么会有这么多的编译器?哪个才是官方的? -
茅龚可益: C++不是微软发明,C++是语言 但是有不同分类 比如微软的就是VC++了. 编译器没有官方一说,只是方向不同,微软的自然是Microsoft VisualC++

衡阳县15732942562: C++语言的全称是什么? -
茅龚可益: C++这个词在中国大陆的程序员圈子中通常被读做“C加加”,而西方的程序员通常读做“C plus plus”,“CPP”. 它是一种使用非常广泛的计算机编程语言.C++是一种静态数据类型检查的,支持多重编程范式的通用程序设计语言.它支持过...

衡阳县15732942562: c++的编程工具有哪些,都是哪公司出的
茅龚可益: Turbo C++:美国Borland公司的产品 visual C++:美国微软公司 visual studio(集成visual C++):美国微软公司 borland c++ builder:美国Borland公司

衡阳县15732942562: MicrosoftVisualC++是什么?
茅龚可益: MicrosoftVisualC++,(简称VisualC++、MSVC、VC++或VC)是Microsoft公司推出的以C++语言为基础的开发Windows环境程序,面向对象的可视化集成编程系统 这是我的回答,希望对你有帮助.

衡阳县15732942562: C++ builder是哪家公司的产品? -
茅龚可益: C++BUILDER是由业界著名的Borland公司开发的,后来和DELPHI等开发工具(IDE)一起出售给了Embarcadero(详细信息可到以下页面查看http://baike.baidu.com/view/1271929.html?wtp=tt ),所以现在的新版本都是Embarcadero公司的产品.如果电脑配置主流,当然是选择2010,它对现在的操作系统的支持比6.0版本要好.

衡阳县15732942562: “C,C++”是什么? -
茅龚可益: 是两种程序设计语言C语言的发展过程 C语言是在70年代初问世的.一九七八年由美国电话电报公司(AT&T)贝尔实验室正式发表了C语言.同时由B.W.Kernighan和D.M.Ritchit合著了著名的“THE C PROGRAMMI...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网