C++基础+引用

1.关键字

 C++有63个关键字,C语言有32个关键字,tips:具体关键字在后续知识里面会逐一了解到的,不需要刻意去记。

2.命名空间

命名空间的提出是为了解决C语言中那些命名污染,这么说吧,一个大工程每个人都用很多的a呀nums呀,放在一个项目里面就会产生命名冲突,命名空间的提出大大解决了这个问题,可以多人协作,减少了很多的工作量。

2.1命名空间的定义

定义命名空间,需要使用到 namespace 关键字 ,后面跟 命名空间的名字 ,然 后接一对 {} 即可, {} 中即为命名 空间的成员。tips:一个命名空间就是新的作用域,该空间的所有内容都局限于在这个作用域中。
定义命名空间,可以单独直接定义如N1,也可以嵌套定义如N2和N3,也可以在同一文件中多次定义某一个命名空间,系统最后会将他们合并为一个命名空间。
namespace N1//N1是命名空间的名称
{
	//命名空间里面可以定义变量和函数
	int ADD(int left, int right)
	{
		return left + right;
	}
	int x = 0;
}
namespace N2
{
	int x = 0;
	int ADD(int left, int right)
	{
		return left + right;
	}
	//可以嵌套定义
	namespace N3 {
		int x = 5;
	}
}
namespace N1
{//可以合并
	int y = 0;
}
int main()
{
	cout << N2::x;
	cout << N1::y;

	cout << N2::N3::x;
	return 0;
}

而命名空间的使用可以直接加空间名称和作用限定符比如N1::X;

也可以直接将命名空间引入进来比如using N1;或者using N1::X;

简单来说,命名空间的使用有三种方式:

 1.加命名空间名称及作用域限定符

cout << N2::x;

 2.使用using将命名空间中成员引入

using  N1::x;

 3.使用using namespace 命名空间名称引入

using namespace N1;

3.输入输出

使用 cout 标准输出 ( 控制台 ) cin 标准输入 ( 键盘 ) 时,必须 包含 < iostream > 头文件 以及 std 标准命名空 间。
2. 使用 C++ 输入输出更方便,不需增加数据格式控制,比如:整形 --%d ,字符 --%c ,数据类型自动识别,非常方便。

4.缺省参数

缺省参数是 声明或定义函数时 为函数的 参数指定一个默认值 。在调用该函数时,如果没有指定实参则采用该 默认值,否则使用指定的实参。就类似于备胎,嗯,很对。
注意事项:半缺省参数,只能从右往左依次给,不能间隔给,要不然编译器识别不了,C语言不支持这个语法,缺省参数不能在定义和声明中同时出现要不然也会引起歧义,缺省值必须是全局遍历或者常量。

4.1两种缺省参数

void TestFunc(int a = 0)
{
 cout<<a<<endl;
}
int main()
{
 TestFunc(); // 没有传参时,使用参数的默认值
 TestFunc(10); // 传参时,使用指定的实参
}

1.全缺省

void TestFunc(int a = 10, int b = 20, int c = 30)

2.半缺省

void TestFunc(int a, int b = 10, int c = 20)

5.引用

5.1引用的定义

        先正经说说其定义,引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开辟内存空间,它和它 引用的变量共用同一块内存空间。其实就是取一个绰号,咱们都学语言这么久了,给一些变量取一些好听的名字没有什么问题吧,隔壁老王(暗指给看这篇文章的你起的别名)。

5.2引用的特性

1.引用定义时必须初始化(要不然你给谁起绰号呀????)

2.一个变量可以有多个引用(名声太好啦,多来几个好的称呼也是可以的,毕竟我这么牛逼对叭)

3.引用一旦引用一个实体,再不能引用其他实体。(要专一都共用一块内存空间了。)

tips:提一嘴常引用,本身是常量,他的引用也肯定是常引用呀,前面加一个const

5.3使用场景

1.做参数

这里拿交换两个数的函数来做比较,这样我们写Swap(x1,x2)就可以实现交换这两个数值的效果,比起C语言的指针变量方便多了。

void Swap(int& left, int& right)
{
 int temp = left;
 left = right;
 right = temp;
}

2.做返回值

int& Count()
{
 static int n = 0;
 n++;
 // ...
 return n;
}

5.4指针和引用的区别

语法概念上引用就是一个别名,没有独立空间,和其引用实体共用同一块空间。在底层实现上实际是有空间的,因为引用是按照指针方式来实现的。

引用和指针的不同点 :
1. 引用 在定义时 必须初始化 ,指针没有要求
2. 引用 在初始化时引用一个实体后,就 不能再引用其他实体 ,而指针可以在任何时候指向任何一个同类型
实体
3. 没有 NULL 引用 ,但有 NULL 指针
4. sizeof 中含义不同 引用 结果为 引用类型的大小 ,但 指针 始终是 地址空间所占字节个数 (32 位平台下占 4个字节 )
5. 引用自加即引用的实体增加 1 ,指针自加即指针向后偏移一个类型的大小
6. 有多级指针,但是没有多级引用
7. 访问实体方式不同, 指针需要显式解引用,引用编译器自己处理
8. 引用比指针使用起来相对更安全

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值