请输入您要查询的百科知识:

 

在使用兼容C89标准(也称为ANSI C)的编译器时,下面这个程序显示“Hello, world!”然后结束运行:
#include <stdio.h>
int main(void) //在c++中不应该有这个void
{
printf("Hello, world!\");
return 0;
}
(以上是c语言代码,c++语言是c语言的包集,所以这个程序可以运行,但更应该像下面这样)

在使用比较老的编译器时,下面的程序也是可以的:
#include <iostream.h>
using namespace std;
int main()
{
cout << "Hello, world!" << endl;
return 0;
}

在使用兼容C++ 98标准的编译器时,应当是:
#include <iostream>
int main()
{
std::cout<<"Hello,world!"<<std::endl;
return 0;
}
根据ISO C++的规定,main函数的形式只能是
int main()
{
...
}
以及
int main(int argc,char * argv[])
{
...
}
尽管如此,但在Visual C++ 2003以前的Microsoft Visual Studio编译器上,
void main()
{
...
}
也被支持,但这并不正确,也不标准。这样的写法会使程序代码丧失跨平台的特性。每年都有专业人士规定C++的语法,这也是C++优于其他编程语言的原因之一,由它衍生的Java已成为通用编程语言中广受欢迎的一种。

代码性能

人们一般认为,使用Java或C#的开发成本比C++低。但是,如果你能够充分分析C++和这些语言的差别,会发现这句话的成立是有条件的。这个条件就是:软件规模和复杂度都比较小。如果不超过3万行有效代码(不包括生成器产生的代码),这句话基本上还能成立。否则,随着代码量和复杂度的增加,C++的优势将会越来越明显。造成这种差别的就是C++的软件工程性。

C++的Hello World程序

在使用兼容C89标准(也称为ANSI C)的编译器时,下面这个程序显示“Hello, world!”然后结束运行:

# include <iostream>

int main()

{

std::cout << "Hello, world!" << std::endl;

return 0;

}

在使用兼容C99标准(ISO/IEC 14882-1998)的编译器时,下面的程序也是可以的:

# include <iostream>

using namespace std;

int main()

{

cout << "Hello, world!" << endl;

return 0;

}

根据ISO C++的规定,main函数的形式只能是

int main()

{

/* ... */

}

以及

int main(int argc, char * argv[])

{

/* ... */

}

尽管如此,但在大部分编译器(例如Visual C++编译器)上,

/* 永远不要这么写 */

void main()

{

/* ... */

}

也被支持。

编程技巧

使用new和delete进行动态内存分配和释放 运算符new和delete提供了存储的动态分配和释放功能。它的作用相当于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

8.Qt Creator等基于Qt开发框架的IDE

如上所示,目前流行的GNU GCC和微软的Visual Studio系列各执一套基本的编译链,其他的IDE都是衍生产品

经典著作

书名 备注

《The C++ Standard Library: A Tutorial and Reference》
中文版:《C++标准程序库:自修教程与参考手册》 百科全书式的C++标准库著作,一本需要一再查阅的参考大全。本书详细介绍了每一标准库组件的规格和用法,内容涵盖包括流和本地化在内的整个标准库而不仅仅是STL。正如本书副标题所示,它首先适合作为教程阅读,尔后又可用作参考手册。 浅显易懂的写作风格使得这本书非常易读。

《Standard C++ IOStreams and Locales: Advanced Programmer's Guide and Reference》
中文版《标准C++输入输出流与本地化》 

《Effective STL》 在这本书中,Scott讲述了STL容器和算法的工作机制以及如何以最佳方式使用它们。和Scott的其他作品一样,这本书的写作风格清晰、精确,具有极佳的可读性。

影印版《Generic Programming and the STL: Using and Extending the C++ Standard Template Library》
中文版《泛型编程与STL》 这本书散发着浓厚的学院气息。Andrew Koenig和Barbara Moo在Accelerated C++: Practical Programming by Example》一书末尾郑重推荐另外两本进阶好书(除了他们自己的《Ruminations on C++》外),其中一本是TCPL,另外一本就是本书。

Douglas C. Schmidt, Stephen D. Huston,《C++ Network Programming》
Volume 1: Mastering Complexity with ACE and Patterns;
Volume 2: Systematic Reuse with ACE and Frameworks;
中文版:,《C++网络编程》
卷1:运用ACE和模式消除复杂性
卷2:基于 ACE 和框架的系统化复用 采用C++进行企业级网络编程,ACE(Adaptive Communications Environment)是一个值得考虑的选择,ACE是一个面向对象、跨平台、开放源码的网络编程框架,目标在于构建高性能网络应用和中间件。
Douglas是ACE的创始人,Stephen则已为ACE提供了数年的技术支持和顾问服务,两位都是ACE社群(是的,ACE的影响和实际应用的程度已经形成了一个社群)的专家。
除了使用C++面向对象设计技术和模板等高级语言特性外,ACE还运用了大量的模式。《C++网络编程》卷1和卷2并不仅仅教你关于ACE的方方面面,它还会教给你模式和通用框架设计等高级技术等。
并非所有网络应用都要使用Web服务器(以及其他应用服务器)和重量级组件模型,换个思路,它们或许也可以从轻量级的ACE组件中获益。

Bruce Eckel,《Thinking in C++》影印版二版、三版(又名卷二)
中文《C++编程思想》二版
卷一:标准C++导引
卷二:实用编程技术 《Thinking in C++》的第1版于1996年荣获“软件研发”杂志评选的图书震撼大奖。第2版对内容进行了大幅改写和调整,以反映C++标准化带来的影响以及当时面向对象领域最新研究和实践成果。
“输入输入流”、“多重继承”、“异常处理”和“运行时类型识别”等高级主题连同C++标准化以后增加的一些内容则被放入第二卷中。

Andrew Koenig, Barbara E. Moo,《Ruminations on C++: A Decade of Programming Insight and Experience》
中文版《C++沉思录》  一本关于C++编程思想和程序设计技术而非语言细节的著作。
Bjarne这样评价这本书:本书遍布“C++是什么?C++能够做什么?”的真知灼见。

Stanley B. Lippman,影印版《Inside The C++ Object Model》
中文版《深度探索C++对象模型》  从编译器角度观察C++。本书探讨了大量C++面向对象程序设计的底层运作机制,包括构造函数、函数、临时对象、继承、虚拟、模板的实例化、异常处理、运行期类型识别等,另外还介绍了一些在实现C++对象模型过程中做出的权衡折衷。

Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides,《Design Patterns:Elements of Reusable Object-Oriented software》
中文版《设计模式:可复用面向对象软件的基础》  本书并非专为C++程序员而写,但它采用了C++(以及Smalltalk)作为主要示例语言,C++程序员尤其易于从中受益。

John Lakos,《Large-Scale C++ Software Design》
中文版《大规模C++程序设计》 

候捷,《STL 源码剖析》 

《The C++ Standard : Incorporating Technical Corrigendum No. 1》 

C++面向对象程序设计(作者:Walter Savitch)  

C++ Primer中文版(第4版)  《C++ Primer中文版(第4版)》对C++基本概念和技术全面而且权威的阐述,对现代C++编程风格的强调,使本书成为C++初学者的最佳指南;对于中高级程序员,本书也是不可或缺的参考书。第4版不再强调低层编程技术,而把中心转向标准库的使用。书中很早就开始介绍标准库,示例也已经重新改写,充分利用了标准库设施。我们也对语言主题叙述的先后次序进行了重新编排,使讲解更加流畅。
作为目前业界广泛使用的编程语言,C++可谓包罗万象、博大精深。20年来,讲述C++的图书早已经汗牛充栋、层出不穷,但其中业界公认的完整涵盖C++标准的权威著作只有两部,其中一部就是本书!它是业界内久负盛名、无可替代的C++经典著作,它的原版销量超过450000册,它教授最新的编程理念与实践,它是所有C++程序员不可或缺的参考书!

C++ Primer plus(第五版)  本书享有“程序员和开发人员学习C++的完整教程”的美誉,它经过仔细的测试,制作精细,是计算机行业的经典著作。前4版在美国的总销售量超过了10万册。该书阐述了包括结构化代码和自顶向下设计在内的编程原理,涵盖了类、继承、模板、异常以及最新的面向对象编程技术等内容。

常见错误

英文 参考译文

Ambiguous operators need parentheses  不明确的运算需要用括号括起

Ambiguous symbol ''xxx''  不明确的符号

Argument list syntax error  参数表语法错误

Array bounds missing  丢失数组界限符

Array size toolarge  数组尺寸太大

Bad character in paramenters  参数中有不适当的字符

Bad file name format in include directive  包含命令中文件名格式不正确

Bad ifdef directive synatax  编译预处理ifdef有语法错

Bad undef directive syntax  编译预处理undef有语法错

Bit field too large  位字段太长

Call of non-function  调用未定义的函数

Call to function with no prototype  调用函数时没有函数的说明

Cannot modify a const object  不允许修改常量对象

Case outside of switch  漏掉了case 语句

Case syntax error Case 语法错误

Code has no effect  代码不可述不可能执行到

Compound statement missing{  分程序漏掉"{"

Conflicting type modifiers 不明确的类型说明符

Constant expression required 要求常量表达式

Constant out of range in comparison 在比较中常量超出范围

Conversion may lose significant digits 转换时会丢失意义的数字

Conversion of near pointer not allowed 不允许转换近指针

Could not find file ''xxx''  找不到XXX文件

Declaration missing ;  说明缺少";"

Declaration syntax error  说明中出现语法错误

Default outside of switch Default 出现在switch语句之外

Define directive needs an identifier 定义编译预处理需要标识符

Division by zero 用零作除数

Do statement must have while Do-while语句中缺少while部分

Enum syntax error 枚举类型语法错误

Enumeration constant syntax error 枚举常数语法错误

Error directive :xxx  错误的编译预处理命令

Error writing output file 写输出文件错误

Expression syntax error  表达式语法错误

Extra parameter in call  调用时出现多余错误

File name too long  文件名太长

Function call missing  函数调用缺少右括号

Fuction definition out of place 函数定义位置错误

Fuction should return a value  函数必需返回一个值

Goto statement missing label  Goto语句没有标号

Hexadecimal or octal constant too large 16进制或8进制常数太大

Illegal character ''x''  非法字符x

Illegal initialization  非法的初始化

Illegal octal digit  非法的8进制数字

Illegal pointer subtraction 非法的指针相减

Illegal structure operation  非法的结构体操作

Illegal use of floating point  非法的浮点运算

Illegal use of pointer  指针使用非法

Improper use of a typedefsymbol  类型定义符号使用不恰当

In-line assembly not allowed  不允许使用行间汇编

Incompatible storage class 存储类别不相容

Incompatible type conversion 不相容的类型转换

Incorrect number format 错误的数据格式

Incorrect use of default Default使用不当

Invalid indirection  无效的间接运算

Invalid pointer addition 指针相加无效

Irreducible expression tree 无法执行的表达式运算

Lvalue required  需要逻辑值0或非0值

Macro argument syntax error 宏参数语法错误

Macro expansion too long  宏的扩展以后太长

Mismatched number of parameters in definition  定义中参数个数不匹配

Misplaced break  此处不应出现break语句

Misplaced continue  此处不应出现continue语句

Misplaced decimal point 此处不应出现小数点

Misplaced elif directive 不应编译预处理elif

Misplaced else  此处不应出现else

Misplaced else directive  此处不应出现编译预处理else

Misplaced endif directive 此处不应出现编译预处理endif

Must be addressable 必须是可以编址的

Must take address of memory location  必须存储定位的地址

No declaration for function ''xxx''  没有函数xxx的说明

No stack  缺少堆栈

No type information/没有类型信息 缺少堆栈

Non-portable pointer assignment  不可移动的指针(地址常数)赋值

Non-portable pointer comparison  不可移动的指针(地址常数)比较

Non-portable pointer conversion 不可移动的指针(地址常数)转换

Not a valid expression format type  不合法的表达式格式

Not an allowed type  不允许使用的类型

Numeric constant too large  数值常太大

Out of memory 内存不够用

Parameter ''xxx'' is never used 能数xxx没有用到

Pointer required on left side of ->  符号->的左边必须是指针

Possible use of ''xxx'' before definition 在定义之前就使用了xxx(警告)

Possibly incorrect assignment  赋值可能不正确

Redeclaration of ''xxx''  重复定义了xxx

Redefinition of ''xxx'' is not identical xxx的两次定义不一致

Register allocation failure  寄存器定址失败

Repeat count needs an lvalue  重复计数需要逻辑值

Size of structure or array not known 结构体或数给大小不确定

Statement missing ;  语句后缺少";"

Structure or union syntax error  结构体或联合体语法错误

Structure size too large  结构体尺寸太大

Sub scripting missing ]  下标缺少右方括号

Superfluous & with function or array 函数或数组中有多余的"&"

Suspicious pointer conversion  可疑的指针转换

Symbol limit exceeded  符号超限

Too few parameters in call  函数调用时的实参少于函数的参数不

Too many default cases  Default太多(switch语句中一个)

Too many error or warning messages  错误或警告信息太多

英文 参考译文

Too many type in declaration  说明中类型太多

Too much auto memory in function 函数用到的局部存储太多

Too much global data defined in file  文件中全局数据太多

Two consecutive dots  两个连续的句点

Type mismatch in parameter xxx  参数xxx类型不匹配

Type mismatch in redeclaration of ''xxx''  xxx重定义的类型不匹配

Unable to create output file ''xxx''  无法建立输出文件xxx

Unable to open include file ''xxx''  无法打开被包含的文件xxx

Unable to open input file ''xxx''  无法打开输入文件xxx

Undefined label ''xxx''  没有定义的标号xxx

Undefined structure ''xxx''  没有定义的结构xxx

Undefined symbol ''xxx''  没有定义的符号xxx

Unexpected end of file in comment started on line xxx  从xxx行开始的注解尚未结束文件不能结束

Unexpected end of file in conditional started on line xxx  从xxx 开始的条件语句 尚未结束文件不能结束

Unknown assemble instruction 未知的汇编结构

Unknown option  未知的操作

Unknown preprocessor directive: ''xxx'' 不认识的预处理命令xxx

Unreachable code 无路可达的代码

Unterminated string or character constant  字符串缺少引号

User break 用户强行中断了程序

Void functions may not return a value  Void类型的函数不应有返回值

Wrong number of arguments  调用函数的参数数目错

''xxx'' not an argument  xxx不是参数

''xxx'' not part of structure xxx不是结构体的一部分

xxx statement missing (  xxx语句缺少左括号

xxx statement missing )  xxx语句缺少右括号

xxx statement missing ;  xxx缺少分号

xxx'' declared but never used  说明了xxx但没有使用

xxx'' is assigned a value which is never used  给xxx赋了值但未用过

Zero length structure 结构体的长度为零

优点

C++在一定程度上可以和C语言很好的结合,甚至目前大多数C语言程序是在C++的集成开发环境中完成的。C++相对众多的面向对象的语言,具有相当高的性能。

C++引入了面向对象的概念,使得开发人机交互类型的应用程序更为简单、快捷。很多优秀的程序框架包括MFC、QT、wxWidgets就是使用的C++。

争议

C++由于语言本身过度复杂,这甚至使人类难于理解其语义。更为糟糕的是C++的编译系统受到C++的复杂性的影响,非常难于编写,即使能够使用的编译器也存在了大量的问题,这些问题大多难于被发现。

由于本身的复杂性,复杂的C++程序的正确性相当难于保证。也有人提出不支持多线程的原语等缺陷。不过有如此多的知名人士提出了如此多的缺陷,正说明C++被广泛使用和成功。

c++语言由于过度的复杂性,以及与unix的文化相抵触,在unix/linux领域受到很多著名人士(比如Linux之父linus torvalds与著名黑客Eric S. Raymond)的强烈批评与抵制。

参见《unix编程艺术》对c++的批评。

词条 c++
释义

C++这个词在中国大陆的程序员圈子中通常被读做“C加加”,而西方的程序员通常读做“C plus plus”,“CPP”。 它是一种使用非常广泛的计算机编程语言。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/ISOC++。

1998年是C++标准委员会成立的第一年,以后每5年视实际需要更新一次标准。C++0x最终国际投票已于2011年8月10日结束,并且所有国家都投出了赞成票,C++0x已经毫无疑义地成为正式国际标准。先前被临时命名为C++0x的新标准将被称为C++ 2011。C++ 2011将取代现行的C++标准ISO/IEC 14882,它公开于1998年并于2003年更新,通称C++98以及C++03。国际标准化组织于2011年9月1日出版发布ISO/IEC 14882:2011,名称是:Information technology -- Programming languages -- C++ Edition: 3。

组成部分

根据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++设计成静态类型、和C同样高效且可移植的多用途程序设计语言。

· C++设计成直接的和广泛的支援多种程序设计风格(程序化程序设计、资料抽象化、面向对象程序设计、泛型程序设计)。

· C++设计成给程序设计者更多的选择,即使可能导致程序设计者选择错误。

· C++设计成尽可能与C兼容,籍此提供一个从C到C++的平滑过渡。

· C++避免平台限定或没有普遍用途的特性。

· C++不使用会带来额外开销的特性。

· C++设计成无需复杂的程序设计环境。

出于保证语言的简洁和运行高效等方面的考虑,C++的很多特性都是以库(如STL)或其他的形式提供的,而没有直接添加到语言本身里。关于此类话题,Bjarne Stroustrup的《C++语言的设计和演化》(1994)里做了详尽的陈述。

Hello World程序
随便看

 

百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。

 

Copyright © 2004-2023 Cnenc.net All Rights Reserved
更新时间:2024/12/24 0:14:08