浙大 C++ 课程学习笔记7 - static

55 阅读1分钟

static 在 C 语言中的含义

image.png

  1. 一个全局变量是 static 的, 那么这个全局变量就只在这个 .c 文件内生效.

  2. 一个本地变量是 static 的, 那么这个本地变量就具有持久存储了.

  3. 一个 static 的函数, 这个函数只能在这个 .c 文件里访问.

c++ 中的含义

image.png

Global static hidden in file

image.png


Static inside functions

  • static 的本地变量就是全局变量
  • 不过它有一个特殊的访问属性,只能在函数内部被访问

image.png


Static applied to objects

image.png

image.png

Conditional Construction

image.png

Global objects

image.png

Static Initialization Dependency

image.png

Can we apply static to members

image.png

Static Members

image.png

#include <iostream>

using namespace std;

class A
{
private:
    static int i;

public:
    A() { i = 0; }
    void set(int ii) { i = ii; }
    void print() { cout << i << endl; }
    static void say(){cout << i << endl;}
};

int A::i; // 必须有这一句,一定要有.cpp文件进行放置静态成员变量

// g++ main.cpp && ./a.out
// g++ main.cpp -o maincpp.out && ./maincpp.out
int main()
{
    A a,b;
    a.set(10);
    b.print();

    //cout << A::i << endl;
    b.set(100);
    A::say();
    return 0;
}