• 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类型变量的初始化方法一致。

  • 相关阅读:
    Java基础——原码, 反码, 补码 详解
    为什么Java byte 类型的取值范围是-128~127
    JAVA 各种数值类型最大值和最小值 Int, short, char, long, float,&nbs
    JDK config
    为什么要设置Java环境变量(详解)
    什么是JAR包?
    如何用python将一个时间序列转化成有监督学习
    ImportError: numpy.core.multiarray failed to import
    搭建SDN网络——mininet
    回溯法解决最大团问题
  • 原文地址:https://www.cnblogs.com/yulei0713/p/11326964.html
Copyright © 2020-2023  润新知