MST

星途 面试题库

面试题:C++局部与全局同名变量在类成员函数中的情况

假设你有一个类,类中有一个全局变量与类成员函数中的局部变量同名,在成员函数内如何清晰地操作这两个同名变量,且保证代码的可读性和可维护性?阐述原理并给出代码示例。
33.6万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试
  1. 原理
    • 在C++ 中,通过this指针可以明确访问类的成员变量。this指针是指向当前对象的指针,在成员函数内部隐式存在。当成员变量和局部变量同名时,使用this->前缀来访问成员变量,直接使用变量名访问局部变量,这样可以清晰区分二者,保证代码的可读性和可维护性。
  2. 代码示例(以C++ 为例)
#include <iostream>

class MyClass {
private:
    int var; // 全局变量(类的成员变量)
public:
    MyClass(int value) : var(value) {}

    void printVars(int var) { // 局部变量与成员变量同名
        std::cout << "局部变量 var 的值为: " << var << std::endl;
        std::cout << "成员变量 var 的值为: " << this->var << std::endl;
    }
};

int main() {
    MyClass obj(10);
    obj.printVars(20);
    return 0;
}

在上述代码中,printVars函数有一个与成员变量var同名的局部变量var。通过this->var访问成员变量,直接使用var访问局部变量,实现了对同名变量的清晰操作。