C++ 类中的static,const,及引用类型变量的初始化

注意:以下描述的几种类型变量描述的都是类中的成员变量

一、解释

  • static类型变量

    static表示的是静态的。类的静态成员函数、静态成员变量是和类相关的,而不是和类的具体对象相关的。即使没有具体对象,也能调用类的静态成员函数和成员变量

               一般类的静态函数几乎就是一个全局函数,只不过它的作用域限于包含它的文件中和类中,和静态函数类似,【---】

----------------------------------------------

  1. 用static可以为类类型的所有对象所共有,像是全局对象,但又被约束在类类型的名字空间中。static定义的静态常量在函数执行后不会释放其存储空间。
  2. 可以实施封装,将其放在private或protected区域中。
  3. static成员没有this指针,它不是任何一个对象的组成部分,推荐用“类名::static成员名调用”。
  4. static成员函数声明时应写明static关键字,在定义时不能加static关键字。
  5. static数据成员声明时应写明static关键字,在定义时不能加static关键字。
  6. static成员函数不能使用const以修饰其不改变成员属性。
  7. static成员函数不能使用virtual以修饰其虚拟性。
  8. static const数据成员可以在类中声明并且初始化,然后在类定义之外再次进行定义;或者在类中声明,但在类定义外进行定义。非const的static数据成员仅能在类中声明,并在类定义之外进行定义。
  9. static成员函数主要目的是作为类作用域的全局函数。不能访问类的非静态数据成员。类的静态成员函数没有this指针,这导致:1、2、
    1) 不能直接存取类的非静态成员变量,调用非静态成员函数
    2) 不能被声明为virtual
  •       const类型变量

    const定义的常量在超出其作用域之后其空间会被释放,而static定义的静态常量在函数执行后不会释放其存储空间。

  • 引用类型变量

    引用类型变量是其他变量的别称,本身并不占用任何存储空间,使用前必须要进行初始化

二、初始化方法

  • static类型变量
      在对应的源文件(.cpp文件)中初始化,格式如; int A::variable = 10
  • const类型变量
      只能在初始化列表中进行初始化
  • 引用类型变量
      只能在初始化列表中进行初始化

const数据成员 只在某个对象生存期内是常量,而对于整个类而言却是可变的。因为类可以创建多个对象,不同的对象其const数据成员的值可以不同。要想建立在整个类中都恒定的常量,应该用类中的枚举常量来实现,或者static cosnt。由此引入第四种类型变量--静态常量,这种类型的变量初始化推荐和const类型变量的初始化方法一致。

猜你喜欢

转载自www.cnblogs.com/yulei0713/p/11326964.html