1.
关键字const作用
1.1 const 用来定义只读变量
定义时,const可以放在类型说明符前或者后面
Int const I = 2 const int I = 2
1.2定义或说明一个只读数组
int const a[5] = {1,2,3,4,5}; 或 const int a[5] = {1,2,3,4,5}
1.3 const 修饰指针
先忽略类型名(编译器解析的时候也是忽略类型名),我们看const离哪个近,“近水楼台先得月”,离谁近就修饰谁。
const (int) *p //const 修饰*p,p是指针,*p是指针指向的对象,不可变。
(int) const * p; //const 修饰*p,p是指针,*p是指针指向的对象,不可变。
( int) * const p;//const 修饰p,p不可变,p指向的对象可变
const ( int)* const p; // 前一个const修饰*p,后一个const修饰p,指针p和p指向的对象都不可变
1.4 const 修饰函数参数
使参数值在函数体内不会被任意改变
void Fun(const int *p);
1.5const修饰符也可以修饰函数的返回值,返回值不可被改变。例如:
const int Fun(void);
2. typedef 是赋予现有类型一个新的名字,而不是创建新的类型。
3. static
3.1 static修饰局部变量
在全局数据区分配内存
不显示初始化的话,将被隐式初始化为0
作用于为局部作用域,当定以他的函数或语句结束时,其作用也随之结束
3.2 static 修饰全局变量
在全局数据区分配内存
不显示初始化的话,将被隐式初始化为0
作用域只能在本文件内,即只能在本文件使用
3 .3 static 修饰函数
静态函数只能在本源文件使用
3.3 C++中static 作用
3.3.1 数据成员前 + static
对类的多个对象而言,静态数据成员只分配一次内存,由该类型的类的对象所共享,
静态数据成员存储在全局数据区,静态成员定义时要分配内存,所以不能在类中定义,要在累的外部对数据成员进行初始化。
静态数据成员有两个优势:
1. 静态数据成员没有进入程序的全局名字空间,因此不存在与程序中其它全局名字冲突的可能性;
2. 可以实现信息隐藏。静态数据成员可以是private成员,而全局变量不能;
3.3.2 静态成员函数
。类的内部声明,外部进行函数实现
。静态成员之间可以相互访问
。非静态成员之间不能相互访问,但是非静态数据函数可以任意访问静态成员函数和静态数据成员
。静态成员函数不能访问非静态的
。静态成员函数由于不是与任何的对象相联系,没有this指针,效率会提高
4. explicit 关键字
用来禁止构造函数进行隐式转换
5. list 删除相同元素 remove(1)
6. 封装一个线程类,要求类的实例一被创建就启动一个线程,并以类的一个成员函数作为线程工作函数
1.1 const 用来定义只读变量
定义时,const可以放在类型说明符前或者后面
Int const I = 2 const int I = 2
1.2定义或说明一个只读数组
int const a[5] = {1,2,3,4,5}; 或 const int a[5] = {1,2,3,4,5}
1.3 const 修饰指针
先忽略类型名(编译器解析的时候也是忽略类型名),我们看const离哪个近,“近水楼台先得月”,离谁近就修饰谁。
const (int) *p //const 修饰*p,p是指针,*p是指针指向的对象,不可变。
(int) const * p; //const 修饰*p,p是指针,*p是指针指向的对象,不可变。
( int) * const p;//const 修饰p,p不可变,p指向的对象可变
const ( int)* const p; // 前一个const修饰*p,后一个const修饰p,指针p和p指向的对象都不可变
1.4 const 修饰函数参数
使参数值在函数体内不会被任意改变
void Fun(const int *p);
1.5const修饰符也可以修饰函数的返回值,返回值不可被改变。例如:
const int Fun(void);
2. typedef 是赋予现有类型一个新的名字,而不是创建新的类型。
3. static
3.1 static修饰局部变量
在全局数据区分配内存
不显示初始化的话,将被隐式初始化为0
作用于为局部作用域,当定以他的函数或语句结束时,其作用也随之结束
3.2 static 修饰全局变量
在全局数据区分配内存
不显示初始化的话,将被隐式初始化为0
作用域只能在本文件内,即只能在本文件使用
3 .3 static 修饰函数
静态函数只能在本源文件使用
3.3 C++中static 作用
3.3.1 数据成员前 + static
对类的多个对象而言,静态数据成员只分配一次内存,由该类型的类的对象所共享,
静态数据成员存储在全局数据区,静态成员定义时要分配内存,所以不能在类中定义,要在累的外部对数据成员进行初始化。
静态数据成员有两个优势:
1. 静态数据成员没有进入程序的全局名字空间,因此不存在与程序中其它全局名字冲突的可能性;
2. 可以实现信息隐藏。静态数据成员可以是private成员,而全局变量不能;
3.3.2 静态成员函数
。类的内部声明,外部进行函数实现
。静态成员之间可以相互访问
。非静态成员之间不能相互访问,但是非静态数据函数可以任意访问静态成员函数和静态数据成员
。静态成员函数不能访问非静态的
。静态成员函数由于不是与任何的对象相联系,没有this指针,效率会提高
4. explicit 关键字
用来禁止构造函数进行隐式转换
5. list 删除相同元素 remove(1)
6. 封装一个线程类,要求类的实例一被创建就启动一个线程,并以类的一个成员函数作为线程工作函数