C++
- 从C到C++
C++基本情况介绍
++ C语言运算符 C++是在C语言之上的扩展
起初的名称:C with Class 即带类的C语言,只是C语言的一部分
-
C++的诞生时间
C++ 是由 Bjarne Stroustrup(本贾尼·斯特劳斯特鲁普 ) 于 1979 年在新泽西州美利山贝尔实验室开始设计开发的。C++ 进一步扩充和完善了 C 语言,最初命名为带类的C(C with Class),后来在 1983 年更名为 C++。
C++的标准化工作于1989年开始。
1998年,C++的ANSI/IS0标准被投入使用。
时间 标准版本 1989/1998 89年制定98年投入使用 2003 第二个C++标注,对98标准略作修改 2011 第三个C++标准,颠覆性的标准 2014 每三年提出一个标注 C++ 是 C 的一个超集,事实上,任何合法的 C 程序都是合法的 C++ 程序。
-
C++的特点
- C++宏观上面向对象,微观上也面向过程,C语言为面向过程的语言
- 支持运算符重载(令自定义的类型也支持运算符(算数运算符,逻辑运算符等)
- 支持异常机制——错误处理(errno) #include <errno.h>
- 支持泛型编程——对类型抽象化
-
C++的应用
- 兼顾执行效率和开发效率
- C语言具有其他高级语言无法比拟的高效率
- C++有优化编译器,在部分场合能让C++具有C的执行效率
- 面向对象有丰富的扩展库
- 科学计算库 (基本上由C++实现
- 计算机网络 (ACE库
- 广泛引用与网络编程
- 网络游戏 (LOL等大型网络游戏)
- 强建模能力 (数字建模 3D
- 桌面应用程序 (office, windows桌面
- 驱动程序 (C++优化编译器使得其执行效率提高
- 兼顾执行效率和开发效率
-
C和C++的区别
- C++基本完全兼容C语言
- C语言面向过程,C++面向对象(宏观上面向对象,微观上也面向过程)
- 其他可见C++特点
- C++的函数支持重载、默认值、哑元
- C++的枚举是一种强类型
-
第一个C++程序!
#include<iostream>//C++标准IO库,一般C++的库基本没有.h后缀 //C++中可以直接使用C 语言的头文件,但是如果使用C语言标准的头文件,一般来说C++也有自己提供的 #include<cstdio> #include<cstdlib> using namespace std;//C++ 把标准库中的对象类型的名称放在了std中。 int main() { cout<<"HelloWorld!"<<endl; return 0; }
使用g++编译器 在文件名称后加 -lstdc++也可以用gcc编译器
后缀名一般为cpp 写成C,c++,cc也行
-
独特的基本数据类型
- C++中有bool布尔类型
- bool类型的取值为 true 和 false 表示 真和假 底层用 1和0存储
- 在输出时,true – 1 false—0 可以使用boolalpha 输出 true 和 false
- C++中有bool布尔类型
-
C++的struct类型
与C语言中struct的区别:
-
C++定义完结构体变量后,定义变量可以不使用struct关键字
-
C语言sizeof(空结构体)的大小为0,C++中为1,主要是为了标识内存
-
C++的struct中可以定义函数(在自定义类型中定义函数,即面向对象的思想)
在其中定义的函数可以直接访问结构体中的变量
结构体中的变量可以用static修饰,但需要在结构体外进行定义
类型 结构体名::成员名 = init_val;
C++的结构体可以用访问控制属性,(public、protected、private)
允许继承
-
-
C++的enum
是一种独立的类型,不能和C语言一样直接用数字赋值枚举类型的变量,只能用枚举值
但是可以用枚举给int类型变量赋值
enum Direction{ UP,DOWN,LEFT,RIGHT}; Direction d = UP;//cout << d << endl; 依然是整数 d = DOWN; d = LEFT; d = RIGHT; d = 0; d = 1; d = 1024; //错误的 但是C语言中允许 int num = d; num = LEFT; //可以的
-
C++的union
- C++中支持匿名联合(既没有类型,也没有定义联合变量)
- C++中的匿名联合表示的是变量在内存中的布局方式
- 可以直接访问匿名联合中的属性
//以编译时,以联合的形式编译布局a,b,c,即让a,b,c共用一块内存 union{ int a; int b; char c; }; a = 1024; b = 9527; c = 'A';
-
C++的string
//保留了C风格的字符串,同时引入了string类型的字符串 string s1; //空字符串 string s2 = "Hello world"; //C指针的初始化方式 string s3("Hello world"); string s4 = { "HEllo world"<