从零开始C++系列 c++ 入门
Posted 万物皆为二叉树
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从零开始C++系列 c++ 入门相关的知识,希望对你有一定的参考价值。
C++ 入门
C++关键字
c++是包容c的,也包容c的所有关键字,c有32个关键字,c++有63个关键字,下面分类列出。
关键字功能与特性,我们会在后面详细解读
C++特性
-
命名空间
在C/C++中,变量、函数和后面要学到的类都是大量存在的,这些变量、函数和类的名称将都存在于全局作用域中,可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地化,以避免命名冲突或名字污染,namespace关键字的出现就是针对这种问题的。
-
命名空间的使用
- 加命名空间名称及作用域限定符
int main()
n::i = 9;
printf("%d", n::i);
return 0;
- 使用using将命名空间中成员引入
using n::i;
int main()
printf("%d", n::i);
return 0;
使用using namespace 命名空间名称引入
using namespace n;
int main()
printf("%d\\n", n::i);
printf("%d\\n", k);
return 0;
- c++ 的输入和输出
#include<iostream>
using namespace std;
int main()
cout << "Hello world!!!" << endl;
return 0;
说明:
- 使用cout标准输出(控制台)和cin标准输入(键盘)时,必须包含< iostream >头文件以及std标准命名空
间。
注意:早期标准库将所有功能在全局域中实现,声明在.h后缀的头文件中,使用时只需包含对应头文件即可,后来将其实现在std命名空间下,为了和C头文件区分,也为了正确使用命名空间,规定C++头文件不带.h;旧编译器(vc 6.0)中还支持<iostream.h>格式,后续编译器已不支持,因此推荐使用+std的方式。 - 使用C++输入输出更方便,不需增加数据格式控制,比如:整形–%d,字符–%c
注意 : cin指向变量 输入。cout打印变量,指向cout。
缺省参数
- 缺省就是默认。默认参数就是恢复出厂设置吧。缺省参数是声明或定义函数时为函数的参数指定一个默认值。在调用该函数时,如果没有指定实参则采用该默认值,否则使用指定的实参。
int stradd(int a = 9)//默认设置为a=9 当不传参时则为9
return a * a;
- 缺省参数的分类
注意: 缺省参数不能在函数的定义和命名中同时出现,否则编译器无法识别。缺省值必须是常量或者全局变量。
函数重载
函数重载:是函数的一种特殊情况,C++允许在同一作用域中声明几个功能类似的同名函数,这些同名函数的形参列表(参数个数 或 类型 或 顺序)必须不同,常用来处理实现功能类似数据类型不同的问题
int Add(int left, int right)
return left + right;
double Add(double left, double right)
return left + right;
long Add(long left, long right)
return left + right;
int main()
Add(10, 20);
Add(10.0, 20.0);
Add(10L, 20L);
return 0;
注意 :
- 函数名称必须相同。
- 参数列表必须不同(个数不同、类型不同、参数排列顺序不同等)。
- 函数的返回类型可以相同也可以不相同。
- 仅仅返回类型不同不足以成为函数的重载
- 反回类型和是否重载无关
例如
另外 函数重载有且只有一个 同样变量的缺省参数
例如
虽然构成了 重载 但缺省参数出现了问题 一样不能重载。
函数重载原因
语言没办法支持重载,因为同名函数没办法区分。而C++是通过函数修饰规则来区分,只要参数不同,修饰出来的名字就不一样,就支持了重载。
extern “c”
在实际中 我们经常c和c++同时使用 然后c++和c的函数名修饰规则又不一样,就需要使用extern c ,在函数前加extern “c” 表示函数使用c的规则,那么函数就不支持重载。
注意:
c++ 默认浮点数为double类型 要传入float需要后面加f
引用
引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开辟内存空间,它和它引用的变量共用同一块内存空间。
可以看到 b作为a的别名 和a是等效的。
注意:
- 引用在定义时必须初始化
- 一个变量可以有多个引用
- 引用一旦引用一个实体,再不能引用其他实体
- 引用类型和被引用实体为同一类型
引用传参
注:
-
因为 a和b分别是x和y的别名 所以x和y在swap做个函数栈桢中相当于a和b的别名。
-
重载的错误 int&和int 不构成重载
引用和指针的对比
- 引用在定义时必须初始化,指针没有要求
- 引用在初始化时引用一个实体后,就不能再引用其他实体,而指针可以在任何时候指向任何一个同类型
实体 - 没有NULL引用,但有NULL指针
- 在sizeof中含义不同:引用结果为引用类型的大小,但指针始终是地址空间所占字节个数(32位平台下占
4个字节) - 引用自加即引用的实体增加1,指针自加即指针向后偏移一个类型的大小
- 有多级指针,但是没有多级引用
- 访问实体方式不同,指针需要显式解引用,引用编译器自己处理
- 引用比指针使用起来相对更安全
以上是关于从零开始C++系列 c++ 入门的主要内容,如果未能解决你的问题,请参考以下文章