C++基础知识剖析第一弹

一.命名空间

 在编程中时常会出现重名的现象,所以C++设计了namspace来避免这个问题。namespace将全局作用域分成几部分作用域,因为在不同的作用域中允许存在同名变量,所以使用namespce可以防止同名变量冲突。

使用方法:

#include <stdio.h>
#include <stdlib.h>
int rand = 10;
// C语言没办法解决类似这样的命名冲突问题,所以C++提出了namespace来解决
int main()
{
printf("%d\n", rand);
return 0;
}
// 编译后后报错:error C2365: “rand”: 重定义;以前的定义是“函数”

二.缺省参数

在C++中支持同名函数的存在,c++之所以能够区分这些同名函数是因为c++中特有的函数命名规则。

三.函数重载

#为什么C++支持函数重载而C语言不支持?

因为C++程序在链接过程中会根据函数名以及参数命名,但是C语言只根据函数名命名放到符号表中,那么链接过程中C++程序可以区分含有不同参数的函数,而C语言不能,所以C++可以支持而C语言不支持。

四.引用

4.1 . 引用的语法

int i = 0;
int& a = i; //那么a就是i的别名

引用相当于外号或者说小名,用引用可以找到本体,正如喊“及时雨” 和 “黑旋风”可以喊到宋江和李逵一样。

引用和指针很类似,根据指针和引用都可以访问到原空间,但是访问的语法并不相同。

	int i = 10;
	int* pi = &i;
	int& ri = i;
	cout << *pi << endl;  // 使用指针需要解引用
	cout << ri << endl    // 引用访问不需要解引用

因为指针需要解引用而引用不需要,所以引用比指针更直接。

4.2 引用的特性

引用与指针不同,引用是必须要初始化的,而且引用不能像指针那样可以随意改变指向,引用一旦确定了代表的实体,就不能再更改,如下面代码所示

	int i = 10;
	int p = 50;
	int& ri = i;
	ri = p;
    cout << i << endl;

这之中ri是i的别名,ri = p 这句语句并不会使得ri变成p的别名,而是将p的值赋给ri的实体i,所以代码执行结果是50;

                                图一

 一个变量可以有很多个引用,正如人可以有许多个称呼,这点和指针一样,一个变量也可以被多个指针指向。

特别要注意的是,从语法的角度来说,引用是不会另外开辟空间的,引用和实体共同占用同一块空间,但是从底层实现来讲,引用和指针一样是会开辟一块4 或 8 字节的空间用来存放对象的地址的,因为引用是按照指针方式实现的。

                                                                图二 

图二是引用和指针的汇编代码实现,可以看到引用和指针其实本质是一样的,但是在学习过程中还是把引用当作不占空间,防止混淆。

4.3 引用的用途

# 做输出型参数

举例 : 比如在实现单链表的 “更改数据” 时,我们

#做返回值

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值