day14|C++重难点之 static关键字和const关键字的作用、常量指针和指针常量之间有什么区别、结构体和类之间有什么区别
- 37.static关键字和const关键字的作用
- 38.常量指针和指针常量之间有什么区别
- 39.结构体和类之间有什么区别
37.static关键字和const关键字的作用
1. static 关键字:用于控制 变量和函数 的 生命周期、作用域 和 访问权限
- 首先,用static可以声明静态变量:静态变量的生命周期 在整个程序运行期间 都存在。当在 函数内部 声明静态变量时,即使函数执行完了也不会释放它,下次调用该函数时 会保留上次的状态
- 其次,在类中,被static声明的成员称为静态成员,包括 静态成员变量 和 静态成员函数:
- 静态成员变量:是在类中使用 static 修饰的 成员变量,表示该变量 属于类 而不是 类的实例,所有实例 共享同一份数据
- 静态成员函数:是在类中使用 static 修饰的 成员函数,表示所有对象 共享同一个函数;静态成员函数 只能访问 静态成员变量;而且静态成员函数的调用 可以不通过创建 类的实例,而是直接通过 类名 调用
- 最后,static变量 如果被 多线程 访问,需要特别注意 线程安全 问题
2. const关键字:
- 首先,用const可以声明 常量变量,使变量的值成为 只读状态,不能被修改
- 其次,声明 常量成员函数,表示 该函数 不会修改 对象的成员变量
- 再次,可以用于定义 常量指针,可以定义一个指向 const类型的值的指针,表明 该指针 不能修改 它所指向的值
- 最后,const变量由于不可变性,天然具有 线程安全性
3. 有时候 static 和 const 可以组合使用,如 static const 变量,表示一个静态的常量
总之,static 用于 创建类的静态成员,const 用于 定义常量
38.常量指针和指针常量之间有什么区别
它们的区别主要在于 它们所指向的值 是否可以被修改,以及 它们自己的值 是否可以被修改
- 常量指针 是指 指向常量 的指针,我们不能通过这个指针 来修改它所指向的值,但是指针本身的值,也就是 它所指向的地址 是可以改变的
- 而指针常量 是指 指针本身是常量,也就是说 一旦被初始化,它所指向的地址 就不可更改了。但是 它所指向的数据是可以被修改的
- 也可以同时使用 两个const关键字 来修饰 指针,使得它既是 常量指针,又是 指针常量,也就是 它所指向的数据 不能被修改,同时 它本身的值 也不能被修改
39.结构体和类之间有什么区别
- 在 C++中,struct 类似于 class,即可以包含成员变量,又可以包含成员函数
- 它们的不同点在于:
- 首先,class的成员 都是默认 private的,而struct的成员 都是默认 public的
- class继承 默认的也是 private,而 struct继承 默认的是 public
- class 可以用于定义模板函数,而 struct 不行
- 实际使用中,struct 通常用于 定义一些POD类型,它用来 描述一种数据结构的特性,主要用于 在内存中 表示简单的数据结构