一 . 命名空间
1.namespace的价值
在c++更深入的学习中,我们会遇到更多的函数,变量,和类(类
之后讲),而这些大量存在于全局作用域中,c语言会容易发生命
名冲突的问题,c++为了应对这种问题,提出了命名空间
namespace的概念。
int rand = 0 ;
int main ( )
{
printf ( "%d" , rand) ;
return 0 ;
}
2.namespace的定义
1. 格式:
namespace name{
中间可以定义函数,变量,或类
}
2.namespace本质是一个域,与全局域互相独立,因此解决了名字冲突问题。
3.namespace可以嵌套定义。
4.c++标准库定义在std的namespace中
3.namespace的使用
命名空间的使用有三种
1. 指定空间使用
2. 将某个成员展开使用,推荐项目中常用且没有命名冲突的变量。
3. 展开命名空间所有成员,项目中不推荐,日常练习中可以使用。
namespace test
{
int a = 0 ;
int b = 1 ;
}
int main ( )
{
printf ( "%d" , test:: a) ;
using test:: a;
printf ( "%d" , test:: a) ;
using namespace test;
printf ( "%d" , test:: a) ;
}
二. c++输入输出
<iostream>是input output stream 标准输入输出流。
cin可以理解为c语言的scanf,标准输入流。
cout可以理解为c语言的printf,标准输出流。
std::endl是一个函数,相当于添加一个换行字符和一个刷新缓冲区。
<<流插入运算符,>>流提取运算符,c语言为左移和右移运算符。
<iostream>包含了scanf和printf。
cin和cout 自动识别数据的类型。
三. 缺省函数
1. 缺省函数的定义
缺省函数是声明函数参数指定的一个缺省值,例如Add(int a,int b = 1);1就是b的缺省值。
2. 缺省函数的性质
缺省函数必须从左向右进行缺省。
缺省函数传参必须从左向右。
函数声明定义时,缺省参数不能同时出现,只能在函数声明中出现。
四. 函数重载
函数重载是指同一作用域出现同名函数,这些函数名相同,参数不同的叫做函数重载,c语言不支
持函数重载,c++支持函数重载,这样c++的函数调用就体现出多态性。
函数重载条件
1. 函数参数不同。
2. 函数参数个数不同。
3. 函数参数顺序不同。
五. 引用
1. 引用的概念和定义
引用是给变量取别名,并不开辟空间,就像孙悟空,孙行者,者行孙,都是指孙悟空
2. 引用的特性
1. 引用必须初始化
2. 引用初始化后不能改变
3. 一个变量可以有多个引用
3. 引用的使用
引用可以引用传参或着引用做返回值,可以减少拷贝,提高效率。
4. const引用
使用引用时要注意权限可以缩⼩,但是不能放⼤。
例如
1. int& rb = a*3; 表达式的结果拷贝产生临时变量
2.double d = 12.34;
3.int& rd = d;
5. 指针和引用的关系
1. 引用更安全,指针会出现野指针的情况。
2. sizeof含义不同,引用是引用对象大小,指针取决于计算机。
3. 引用直接访问对象,指针需要解引用。
4. 引用不开空间,指针要开空间。
5. 引用必须初始化,指针可以指向空对象。
6. 引用初始化引用了一个对象就不能在引用其他对象,指针可以。