【C++】静态成员变量 ( 静态成员变量概念 | 静态成员变量声明 | 静态成员变量初始化 | 静态成员变量访问 | 静态成员变量生命周期 )

亦凉 2023-10-16 12:59 156阅读 0赞

文章目录

  • 一、静态成员变量概念
    • 1、静态成员变量引入
    • 2、静态成员变量声明
    • 3、静态成员变量初始化
    • 4、静态成员变量访问
    • 5、静态成员变量生命周期
  • 二、完整代码示例

一、静态成员变量概念


1、静态成员变量引入

在 C++ 类中 , 静态成员变量 又称为 静态属性 ;

静态成员归属 : 静态成员变量 是特殊的成员变量 , 是 类所有的 成员 , 而不是对象所有的成员 ;

静态成员变量 提供了 同类对象的共享机制 : 同一个类的 所有实例对象 , 都可以共享访问 想通的 静态成员变量实例 ;

2、静态成员变量声明

静态成员变量 声明 方式 :

  • 使用 static 关键字 修饰 类的 成员变量 , 那么 该成员变量 就被声明为 “ 静态成员变量 “ ;
  • 将 类的成员 声明为 static , 那么该类 不论 创建了多少个 实例对象 , 这些对象都会共享 该 static “ 静态成员变量 “ ;
  • 静态成员变量 声明 : 静态成员变量 是在 类定义时 , 在类的内部 进行 声明 ;

    class Student
    {

    public:

    1. // 带参构造函数
    2. Student(int age, int height)
    3. {
    4. m_age = age;
    5. m_height = height;
    6. cout << "执行 Student 的构造函数" << endl;
    7. }
    8. ~Student()
    9. {
    10. cout << "执行 Student 的析构函数" << endl;
    11. }

    public:

    1. int m_age; // 年龄
    2. int m_height; // 身高
    3. // 在类内部定义静态成员
    4. static int number;

    };

3、静态成员变量初始化

静态成员变量 初始化 : 静态成员变量 是在 类使用时 , 在类的外部 进行 初始化 ;

Student 类的 静态成员 成员变量 初始化有两种方式 :

  • 声明 并 进行初始化 : 声明类内部已经定义的 静态成员变量 , 然后进行初始化 ;

    // 在类外部初始化静态成员变量
    int Student::number = 1;

  • 只进行初始化 : 只对 类内部已定义的 静态成员变量 进行单纯的赋值 ;

    // 在函数中为 类 静态成员变量 赋值
    Student::number = 2;

4、静态成员变量访问

静态成员变量访问 :

  • 使用域操作符访问 : 格式为 类名::静态成员变量名 ;

    // 使用 域操作符 访问 类静态成员变量

    1. // 类名::静态成员变量名
    2. cout << "Student::number = " << Student::number << endl;
  • 使用类对象访问 : 格式为 对象名称.静态成员变量名

    // 使用 对象 访问 类静态成员变量

    1. // 对象名称.静态成员变量名
    2. cout << "s.number = " << s.number << endl;

5、静态成员变量生命周期

静态成员变量 的 生命周期 就是 程序的声明周期 ;

静态成员变量 在 应用启动时 初始化 , 在 进程结束时销毁 ;

静态成员变量在多个对象之间共享 , 在 程序生命周期 之内 , 类的多个对象的 静态成员的值 是相同的 ;

二、完整代码示例


下面的代码中 :

定义了 Student 类 , 其中定义了 静态成员变量 number ;

  1. // 在类内部定义静态成员
  2. static int number;

声明 静态成员变量 并进行初始化的代码为 int Student::number = 1;

  1. // 在类外部声明并初始化静态成员变量
  2. int Student::number = 1;

单独进行 静态成员变量 初始化 , 代码为 Student::number = 2 ;

  1. // 在函数中为 类 静态成员变量 赋值
  2. Student::number = 2;

成员变量访问有两种方式 :

  • 使用 域操作符 访问 类静态成员变量 : 类名::静态成员变量名 ;

    // 使用 域操作符 访问 类静态成员变量

    1. // 类名::静态成员变量名
    2. cout << "Student::number = " << Student::number << endl;
  • 使用 对象 访问 类静态成员变量 : 对象名称.静态成员变量名 ;

    // 使用 对象 访问 类静态成员变量

    1. // 对象名称.静态成员变量名
    2. cout << "s.number = " << s.number << endl;

代码示例 :

  1. #include "iostream"
  2. using namespace std;
  3. class Student
  4. {
  5. public:
  6. // 带参构造函数
  7. Student(int age, int height)
  8. {
  9. m_age = age;
  10. m_height = height;
  11. cout << "执行 Student 的构造函数" << endl;
  12. }
  13. ~Student()
  14. {
  15. cout << "执行 Student 的析构函数" << endl;
  16. }
  17. public:
  18. int m_age; // 年龄
  19. int m_height; // 身高
  20. // 在类内部定义静态成员
  21. static int number;
  22. };
  23. // 在类外部初始化静态成员变量
  24. int Student::number = 1;
  25. int main() {
  26. // 使用 域操作符 访问 类静态成员变量
  27. // 类名::静态成员变量名
  28. cout << "Student::number = " << Student::number << endl;
  29. // 在函数中为 类 静态成员变量 赋值
  30. Student::number = 2;
  31. // 创建 Student 类型对象
  32. Student s(10, 150);
  33. // 使用 对象 访问 类静态成员变量
  34. // 对象名称.静态成员变量名
  35. cout << "s.number = " << s.number << endl;
  36. // 控制台暂停 , 按任意键继续向后执行
  37. system("pause");
  38. return 0;
  39. }

执行结果 :

  1. Student::number = 1
  2. 执行 Student 的构造函数
  3. s.number = 2
  4. 请按任意键继续. . .

在这里插入图片描述

发表评论

表情:
评论列表 (有 0 条评论,156人围观)

还没有评论,来说两句吧...

相关阅读

    相关 静态成员变量

    1)定义静态成员变量 关键字 static 可以用于说明一个类的成员,              静态成员提供了一个同类对象的共享机制  把一个类的成员说明

    相关 静态成员变量

    共享静态数据成员对象:类成员或者成员函数(类的范围内) 普通数据成员和静态数据成员的区别 1.普通数据成员属于类的对象,对象被创建后,普通数据成员才会分配内存。静态数据成员