c++简介

C++是一种被广泛使用的计算机程序设计语言。它是一种通用程序设计语言,支持多重编程模式,例如过程化程序设计数据抽象、面向对象程序设计、泛型程序设计设计模式等。

比雅尼·斯特劳斯特鲁普博士在贝尔实验室工作期间在20世纪80年代发明并实现了C++。起初,这种语言被称作“C with Classes”(“包含‘类’的C语言”),作为C语言的增强版出现。随后,C不断增加新特性。虚函数(virtual function)、运算符重载(operator overloading)、多继承(multiple inheritance)、标准模板库(standard template library, STL)、异常处理(exception)、运行时类型信息(runtime type information)、命名空间(namespace)等概念逐渐纳入标准。1998年,国际标准组织(ISO)颁布了C程序设计语言的第一个国际标准ISO/IEC 14882:1998,目前最新标准为ISO/IEC 14882:2020。根据《C编程思想》(Thinking in C)一书,C++与C的代码执行效率往往相差在±5%之间。

C++有时被认为是C的超集(superset),但这并不严谨。

各个版本的ISO/IEC 14882的附录C中都指出了C++和ISO C的一些不兼容之处。

大部分的C代码可以很轻易的在C中正确编译,但仍有少数差异,导致某些有效的C代码在C中失效,或者在C++中有不同的行为。

最常见的差异之一是,C允许从void*隐式转换到其它的指标类型,但C++不允许。下列是有效的C代码:

  1. // 从void *隐式转换为int *
  2. int *i = malloc(sizeof(int) * 5);

但要使其在C和C++两者皆能运作,就需要使用显式转换:

  1. int *i = (int *)malloc(sizeof(int) * 5);

另一个常见的可移植问题是,C++定义了很多的新关键字,如newclass,它们在C程序中,是可以作为识别字(例:变量名)的。

C99&action=edit&redlink=1)去除了一些不兼容之处,也新增了一些C的特性,如//注释,以及在代码中混合使用。不过C99也纳入几个和C冲突的新特性(如:可变长数组、原生复数类型和复合逐字常数),而C++11已经加入了兼容C99预处理器的特性。

由于C函数和C函数通常具有不同的名字修饰调用约定,所有在C中调用的C函数,须放在extern "C" { /* C函数声明 */ }之内。

环境搭建

1. MacOS

首先打开终端,按组合键Command+Space打开聚焦搜索,输入terminal后按Enter键,就可以打开终端。

在终端输入clang++ —version,如果clang++已经安装成功,就会打印出以下信息

  1. Apple clang version 12.0.5 (clang-1205.0.22.9)
  2. Target: arm64-apple-darwin20.5.0
  3. Thread model: posix
  4. InstalledDir: /Library/Developer/CommandLineTools/usr/bin

如果clang++没有安装,终端就会提示你安装开发环境,在终端输入xcode-select —install,再根据提示安装开发环境,等待片刻安装成功后,再在终端输入xcode-select —install,就会打印出以下信息

  1. xcode-select: error: command line tools are already installed, use "Software Update" to install updates

这样,c开发环境就安装好了。然后选择任何你喜欢的IDE就可以学习c啦,当然不用IDE也可以,用文本编辑器也可以写c++代码,这个以后再说。

2. Windows

在windows下搭建c开发环境常见的有两种,一种是直接下载visual studio,安装微软大礼包,轻松又快乐就搭建好了开发环境。另一种是入门推荐,安装dev c IDE,这个IDE非常轻巧,不需要安装windows大礼包,使用的是MinGW编译工具,即windows下的GNU GCC编译工具,一般版本要远远落后linux,功能也不够齐全,但是对于入门者足够了。

  • visual studio

visualstudio.gif

  • Dev C++

devc++.png

3. Linux

没什么可讲的,玩linux的人如果连c++环境都不会搭建,那还是乘早放弃linux吧。