1.命名空间 namespace
-
变量的查找范围(默认的情况下)
- 当前的局部变量
- 全局变量
- 不会去命名空间去找(以一定的格式 命名::变量或者函数,就是直接去命名空间里去查找)
-
命名空间可以嵌套,来解决命名空间命名重复的情况
使用命名空间
- (直接指定命名空间)使用命名空间定义的结构体:
namespace bit
{int a=0;struct Node{int val;struct Node*next;}int sum(int x,int y){return x+y;}
}
//堆命名空间中的变量的使用
int b=bit::a;
//对命名空间的函数的使用
int sum=bit::sum(1,2);
//对命名空间结构体的使用
struct bit::Node newnode;
- 多个文件可以定义同一个命名空间,它们是会合并的。同一个命名空间里的名称不能相同。
- 展开命名空间
using namespace bit;//改变了查找规则,默认的查找次序的 局部变量,全局变量,展开命名空间之后,默认的查找次序会加上命名空间。
//当只有一个命名空间展开时,命名冲突发生的可能性很小
//当有多个命名空间展开时,很容易发生命名冲突//例子:
namespace bit
{struct Node{int val;struct Node*next;}
}namespace bid
{struct Node{int val;struct Node*next;}
}using namespace bit;
using namespace bid;
//上面的展开就出现命名冲突
- 指定展开某一个
namespace bit
{int a=0;struct Node{int val;struct Node*next;}
}
using bit::a;
- 区域的划分
- 局部域
- 全局域
- 命名空间域
不同的域 可以定义同名的变量/函数/结构体类型
不同的是,局部域和全局域同时也代表了变量的生命周期,但是命名空间域中的变量依然是全局变量,命名空间域中的变量的生命周期和全局变量是一样的。
2.输入输出
c++的官方头文件是放在一个命名空间里的,命名空间的名称为std。
- 流输出
- 流提取
//包含头文件
#incldue<iostream>
using std::cout;
using std::endl;
int main()
{int a=1;float b=1.2;//流的输出//可以自动的识别类型cout<<a<<' '<<b'\n'<<endl;/*这个里的endl也有换行的作用*///流的输入//将i对象的数值,放在j对象中std:;cin>>i>>J;return 0;
}
3.缺省参数
在没有给函数传参数的时候,默认是该位置的缺省值
void fac(int a=1,int b=2,int c=3)
{//操作···
}//函数的调用
fac();
fac(2);
fac(2,3);//这个样的写法是错误的
fac(2, ,3);
- 全缺省
void fac(int a=1,int b=2,int c=3)
- 半缺省
void fac(int a,int b=2,int c=3)
//只能从右向左缺省
注:缺省参数规定是在函数的申明给
4.函数的重载
函数的重载:就是函数的一种特殊的情况,c++允许在同一个作用域中申明一个功能类似的同名函数,但这些函数的形参列表(参数类型,参数的数量,参数的顺序)不同,常用与功能类似的的同名函数,依据形参列表来确定应该调用哪个函数。
运行时会自动匹配参数,上述的三个有一个不同就可以。
注:
- 返回值不同不能辨别函数的重载
- 当传入的函数参数需要类型转换的时候,重载函数就很容易出错,不知道以哪个函数的参数作为标准进行转化,对于非重载函数就没有这个问题
C语言和C++在链接的不同
- C语言链接查找函数的定义是用的是函数名寻找
- C++链接查找的函数名的修饰是通过函数名和函数的参数来修饰的(不同的编译器命名规则不同),所以C++可以使用重载函数
5.引用
引用就是取别名,一个变量可以取多个别名
int a=0;
int&b=a;
//可以给别名取别名,本质上还是作用于a
int&c=b;
//注:都是同一个地址,同一块空间,就是名字不同
-
引用的作用和指针类似
-
引用和指针的不同,引用在初始化之后,是不能改变指向的
注:引用必须要初始化
//不可以取别名的情况
const int m=0;
int& n=m;
//这个是不行的
//理由:权限的方法
//m是只读的,而n则是可读可写的//下面是可以的,这个是权限的平移
const int& n=m;//权限是可以缩小的,下面这个也是可以的
int m=0;
const int&n=m;
权限:作用于变量本身(引用和指针都有,值和值之间没有)
- 权限不可以放大,可以平移
- 权限是可以缩小的
总结
这就是一些c++初阶的一些知识,希望能对你有所帮助,文中的举例并不详尽希望大家能在评论区或私信指教。