C++中的部分关键字的用法
文章目录
本文总结C++中的部分关键字的用法。
1 C++中的部分关键字的用法
1.1 const的用法
1.1.1 定义常量
使用const修饰的变量的值不可改变。
|
|
1.1.2 const与指针
- 指向常量的指针(point to const)
定义方法:const int *p; int const *p;
指向常量的指针的特点:const在*前面,不论它在类型前还是类型后作用相同。
指向常量的指针的特点:
- 不能通过指针改变所指向的数据
- 指针本身的内容可以改变
- 指针指向的内容可以是常量也可以不是常量
- 指针所指向的内容若为非常量,也可以改变
示例如下:
|
|
- 常量指针(const pointer)
定义方法:int *const p;
常量指针就是该指针为常量。因为该指针为一个常量,因此指针的值不能改变。 常量指针的特点:
- 常量指针必须初始化
- 一旦初始化后,指针的内容就不能改变
- 指针所指向的内容可以改变
示例如下:
|
|
- 指向常量的常指针
定义方法:const int *const p;
指向常量的常指针为前面两种情况的综合。因此既不能通过指针变量来改变所指向的数据,也不能更改指针本身的值。 指向常量的常指针:
- 指针本身的内容不能改变
- 不能通过指针改变指针所指向的内容
- 若指针指向的内容为非常量,则指针指向的内容可以改变
示例:
|
|
1.1.3 函数形参
const修饰函数形参,函数中不能修改const形参对应的实参。例如:
|
|
1.1.4 const修饰函数返回值
1.1.5 类相关的const
- 常量成员变量:常成员变量只能通过列表初始化的方式初始化。此后,其值不可改变。
- const修饰成员函数:const修饰的成员函数不能修改类中成员变量的值;不能调用非const修饰的成员函数。
- const修饰对象,对象指针(引用):const修饰的对象只能调用cosnt修饰的成员函数。
1.2 static的用法
1.2.1 静态全局变量
- 该变量在全局数据区分配内存;
- 未经初始化的静态全局变量会被程序自动初始化为0;
- 静态全局变量在声明它的整个文件都是可见的,而在文件之外是不可见的;
1.2.2 静态局部变量
- 该变量在全局数据区分配内存;
- 静态局部变量在程序执行到该对象的声明处时,首次进行初始化;以后的函数调用不再进行初始化;
- 静态局部变量一般在声明处初始化,如果没有显式初始化会被程序自动初始化为0;
- 它始终驻留在全局数据区,直到程序运行结束。但其作用域为局部作用域,当定义它的函数或语句块结束时,其作用域随之结束;
1.2.3 静态函数
静态函数不能被其它文件所用;其它文件中可以定义相同名字的函数,不会发生冲突
1.2.4 类内静态成员
1.2.4.1 静态数据成员
- 类中的静态成员与类本身直接相关。而不是与类的各个对象保持关联。类的静态数据成员是属于整个类,而不与任何对象绑定;
- static关键字只能出现在类内部声明语句中;
- 类的静态成员存在于任何对象之外,对象中不包含任何与静态数据有关的数据;
- 静态成员变量使用前必须先初始化;
- 静态数据成员不能由类的构造函数初始化;
- 静态数据成员一般应在类的外部初始化。当静态数据成员为静态常量(const static)时,可以在类内初始化。
- 静态数据成员只能定义一次。
1.2.4.2 静态成员函数
- 类的静态成员函数也不与任何对象绑定,也不包含this指针。
- 静态成员函数不能声明为const,也不能在static函数体内使用this指针。
- 静态成员函数不能使用非静态成员函数,非静态成员函数可以使用静态成员函数。