# `cpp`基本知识
## 函数相关
### 双冒号
1. 指定作用域 前面是作用域等类名称,后面接类的成员名称
例: A,B表示两个类,A,B中都有成员numb
    A::numb
    B::numb
2. 指定全局作用域的变量
例: 指定 使用全局变量或者局部变量
```cpp
#include <stdio.h>

int count = 0; //全局变量 0

void main()
{
 
 int count = 10; //局部变量10
 
 printf("count =%d\n",count);//局部变量屏蔽了全局变量 所以输出结果是10
 {
  int count = 20;
  
  printf("count =%d\n",::count); //作用域符号指出引用全局变量0
  //::sort
 }
}
```
3. 另外,双冒号也常常用于在类变量内部作为当前类实例的元素进行表示
例:
```cpp
class CA {
public:
  int ca_var;
  int add(int a, int b);
  int add(int a);
};
 
//作用域
int CA::add(int a, int b)
{
  return a + b;
}
 
//另外,双冒号在类变量内部作为当前类实例的元素进行表示
int CA::add(int a)
{
  return a + ::ca_var;
}
``` 
> 引用和地址的区别
> 前者好像类似于变量别名.  无论怎么变还是那个名字,
> 后者是面向名字背后对应的那个人.
## `&`符号的作用
### 引用声明符
> 给一个变量声明另一个名字,相当于别名作用?
> b相当于a的一个别名
```c++
int a;
int &b=a;
``` 
## 地址赋值运算符
> & 变量名//获得该变量的地址
> Int *p=&a  //定义整形指针变量,并将a的地址赋值给指针变量。
```c++
int a;
int b = &a;//得到a变量申请的地址
```
 ## 枚举