文档介绍:第一天__________________________________________ 一. 简介 GNU 微软和 IBM 分别制定标准 iso 制定了 a 标准 c++03 不支持历史了解 c和 c++ 的关系联系: c++ 是建立 c++ 的基础区别: c++ 是强类型语言对类型的检查更加严格面向对象编程(以类的方式组织代码) 运算符重载(一种函数特殊的表现形式) 异常(新的错误处理方式) 范型编程(类型通用编程) 二. 第一个 c++ 程序 1 .c++ .cxx .cpp .C 2 头文件/user/include/c++/ 标准的 c++ #include <iosrteam> #include <string> 标准 c 的头文件在 c++ 去尾加头#include <> --->#include <cstdio> #include <> ---->#indlude <cstring> 系统 c 的头文件#include <sys/ > #include <> 自定义头文件#include "" 3 输入输出#include <> #include <iostream> printf(); cout<<// 变量对象 scanf cin>> 4 编译器 gcc ***.cpp -lstdc++ g++ ***.cpp 编译选项和 gcc 完全相同-o -c -S -E -l -L -I -On -g 要求第一个程序改成使用 c 的库函数三命名空间 概念把一组相关的数据(变量,函数,类型)组织到一起的逻辑结构。 作用便于逻辑划分模块防止命名冲突(起相同名可以用命名空间隔开) 语法 namespace 空间名{ 定义变量; 声明函数; 定义函数; 定义类型; } 同一个命名空间可以出现多次 namespace std{ } namespace std{ } 可重复出现, 解决一次定义不完全 举例 使用如何使用命名空间? 1. 在数据前加命名空间名:: (双冒号) IBM :: age tarena :: age 调用哪个命名区以及里面的数据在前面加命名区名:: 变量名命名区名:: 函数名命名区名:: 类型名这么做不会混淆,但书写不方便 2. 使用 using 声明 using 空间明: :数据名再使用时直接用数据名引用冲突回到第一种解决办法 // 调用哪个命名区以及里面的数据在前面加,调用前指明用哪个命名区哪个数据,接下来直接用就 ok ,可是在全局指明,也可内部指明。 3. 使用命名空间指令 using namespace 空间名; 把空间名下所有的数据可以直接在这个作用域下直接使用。引用冲突回到第一种解决办法 把要调用的空间名直接写在全局,后面的调用只写数据名就 ok。 4. 命名空间的嵌套 Namespace ns1{ int a=1; namespace ns2{ int b=1; }} 命名空间的嵌套 无名命名空间作用域为本模块内部如果一个数据没有定义在任何命名空间中则这个数据属于无名命名空间全局区里面的数据属于无名命名空间 namespace{ /* 相当于 c 语言中的 static 作用域为本模块内部*/ 数据}++ 中的结构联合枚举 结构体相同点:定义类型的语法和 c 完全相同不同点:表达类型时, 不在需要 struct 关键字结构中可以定义函数(成员函数)。要求:写一个结构体表达一个日期年月日然后写一个全局函数,用来表达一个日期变量的信息。 联合体: 本质是公用一块内存,其大小是其最大元素所占的空间大小,所以可用来测大小端。相同点:语法可以和 c 中完全相同不同点:表达联合类型时,可以省略 union c++ 支持匿名联合 枚举 enum 相同点:语法和 c 相同,第一个数字是 0 ,后面的依次递增不同点:表达类型时可以省略 enum 枚举变量只能接受枚举值不再能接受整数值这里体现了 c++ ++ 中的 bool 类型 c++ 天生就支持 bool 类型不用导入头文件#inclucde <> 取值只有真( true )和假( false ) bool 类型的变量可以赋任何值代表假 false NULL 0 '\0' bool 值作为整数时真就是 1 假就是 0 bool ++ 中的符号转