MST

星途 面试题库

面试题:C++类作用域中成员函数对静态成员的访问

在C++类作用域内,描述非静态成员函数和静态成员函数访问静态成员变量的方式有何不同?并给出示例代码。
32.9万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试

不同点

  • 非静态成员函数:可以直接访问静态成员变量,因为非静态成员函数在对象的上下文中执行,通过对象的this指针可以隐式访问类的静态成员变量。
  • 静态成员函数:也可以直接访问静态成员变量,静态成员函数不依赖于任何对象实例,直接通过类名或对象名(但不推荐使用对象名,因为静态成员函数与对象无关)访问静态成员变量。

示例代码

#include <iostream>

class MyClass {
public:
    static int staticVar; // 静态成员变量声明

    // 非静态成员函数
    void nonStaticFunc() {
        std::cout << "Non - static function accessing static variable: " << staticVar << std::endl;
    }

    // 静态成员函数
    static void staticFunc() {
        std::cout << "Static function accessing static variable: " << staticVar << std::endl;
    }
};

int MyClass::staticVar = 42; // 静态成员变量定义

int main() {
    MyClass obj;
    obj.nonStaticFunc(); // 通过对象调用非静态成员函数
    MyClass::staticFunc(); // 通过类名调用静态成员函数
    return 0;
}