MST

星途 面试题库

面试题:C++中static在类成员中的应用

在C++类中,static成员变量和static成员函数有什么特点和作用?请举例说明如何定义和使用它们。
11.8万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试

特点和作用

  1. static成员变量
    • 特点
      • 为类的所有对象所共享,而不是某个对象特有的。无论创建多少个类的对象,静态成员变量都只有一份实例。
      • 存储在全局数据区,而不是对象的内存空间中。
      • 必须在类外进行初始化。
    • 作用
      • 用于统计类的对象个数等场景,因为其值对于所有对象是共享的。例如,记录某个类创建了多少个对象。
  2. static成员函数
    • 特点
      • 不与类的特定对象关联,没有this指针。
      • 只能访问类的static成员变量和其他static成员函数。
    • 作用
      • 提供一种与类相关但不依赖于具体对象的操作。例如,用于执行一些与类整体相关的初始化或统计操作,而不需要创建对象。

定义和使用示例

#include <iostream>

class MyClass {
public:
    static int staticVar; // 声明static成员变量
    static void staticFunction(); // 声明static成员函数
};

// 在类外初始化static成员变量
int MyClass::staticVar = 0;

// 定义static成员函数
void MyClass::staticFunction() {
    std::cout << "Static variable value: " << staticVar << std::endl;
}

int main() {
    MyClass obj1;
    MyClass obj2;

    // 通过类名访问static成员变量和函数
    MyClass::staticVar = 10;
    MyClass::staticFunction();

    // 也可以通过对象访问static成员变量和函数
    obj1.staticFunction();
    obj2.staticFunction();

    return 0;
}

在上述代码中,staticVarMyClass类的静态成员变量,staticFunction是静态成员函数。通过类名或对象都可以访问静态成员,静态成员变量在类外初始化,静态成员函数只能访问静态成员。