C++学习笔记.关键字static&静态成员变量

Posted 归止于飞

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++学习笔记.关键字static&静态成员变量相关的知识,希望对你有一定的参考价值。

static的一般用法

关键字static一般有两个用法:

  • 在一般程序中声明变量,可以使得局部变量在程序的声明周期中保持存在,不会在离开作用域时进行销毁。可以在函数调用间保持值
  • static 修饰符也可以应用于全局变量。当 static 修饰全局变量时,会使变量的作用域限制在声明它的文件内。

所以说,一个静态成员变量相当于一个被限制了作用域的全局变量。它不再存储在栈区或者内存区,而是存储在全局区。

类中的static

现在,我们重点讨论类中的static的运用。
如果我们在一个类中使用了static,在接下来的类操作中static将只有一个,其它操作都是在同一个静态变量上进行修改。
示例程序:

#include <iostream>
using namespace std;

class Person

public:
    int m_age;        //对象的年龄
    static int s_num; //对象总的数量
    Person();
    Person(int a)
    
        m_age = a;
        s_num += 1;
    
;

int Person::s_num = 0;

int main()

    Person student(18);
    Person teacher(40);
    cout << Person::s_num << endl;
    cout << student.m_age << endl;
    cout << teacher.m_age << endl;

    cin.get();
    return 0;

//结果:
//2
//18
//40

注意:

  • 静态成员变量必须初始化。并且必须放在类的外面进行初始化。(相当于初始于一个全局变量)
  • 没有实例一样可以直接访问静态成员。

静态成员函数

  • 内部不能使用this指针(this指针只能用在非静态成员函数内)
  • 不能是虚函数(虚函数只能是非静态成员函数)
  • 内部不能访问非静态成员变量\\函数,只能访问静态成员变量/函数)

延伸与拓展:
1、在多线程开发中,注意局部变量的安全问题,尽量使只有一个线程访问局部变量
2、可以将static静态变量运用在设计模式中的单例模式中。

以上是关于C++学习笔记.关键字static&静态成员变量的主要内容,如果未能解决你的问题,请参考以下文章

C++学习笔记.关键字static&静态成员变量

C++ 类和对象期末复习笔记

Java学习笔记3.4.1 static关键字 - 静态变量

Java学习笔记3.4.2 static关键字 - 静态方法

java学习笔记之面向对象static,final关键字

Java学习笔记3.4.3 static关键字 - 静态代码块