📜  C++ |静态关键字|问题6(1)

📅  最后修改于: 2023-12-03 15:29:52.100000             🧑  作者: Mango

C++ | 静态关键字 | 问题6

在 C++ 中,static 关键字有多层含义,其中之一是变量或函数的静态声明。

静态变量

静态变量声明在函数内部时,只会被初始化一次,并且在函数调用结束后也不会被销毁。这就使得这个变量拥有在函数多次调用中保持其值的能力。

void myFunction() {
    static int count = 0;
    count++;
    cout << “Count is: ” << count << endl;
}

int main() {
    myFunction(); // 输出 Count is: 1
    myFunction(); // 输出 Count is: 2
    myFunction(); // 输出 Count is: 3
    return 0;
}
静态成员变量

静态成员变量是类的所有实例所共享的变量,在内存中只有一份拷贝。一般情况下,静态成员变量应该在类的实现文件中声明,并在类的外部进行初始化。

class MyClass {
public:
    static int count;
    MyClass() {
        count++;
    }
};

int MyClass::count = 0;

int main() {
    MyClass obj1;
    MyClass obj2;
    MyClass obj3;
    cout << “Number of objects created: ” << MyClass::count << endl; // 输出 Number of objects created: 3
    return 0;
}
静态函数

静态函数可以访问静态变量或静态成员变量,但不能访问非静态变量或非静态成员变量。静态函数不需要类的实例就可以被调用。

class MyClass {
public:
    static int myStaticFunction(int a, int b) {
        return a + b;
    }
};

int main() {
    int sum = MyClass::myStaticFunction(3, 5);
    cout << “Sum of 3 and 5 is: ” << sum << endl; // 输出 Sum of 3 and 5 is: 8
    return 0;
}
总结

static 关键字在 C++ 中有多种含义,其中之一是变量或函数的静态声明。静态变量只会被初始化一次,并在函数调用结束后也不会被销毁,静态成员变量是类的所有实例共享的变量,静态函数不需要类的实例就可以被调用。