MST
星途 面试题库

面试题:C++ 中成员函数如何区分不同对象的成员数据

在C++ 中,假设有一个类 `MyClass` 包含成员变量 `int data;` 和成员函数 `void printData();`,请解释成员函数 `printData` 是如何区分不同 `MyClass` 对象的 `data` 成员数据的,并且说明 `this` 指针在其中起到什么作用。
33.1万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试
  1. 成员函数区分不同对象的data成员数据的方式
    • 每个MyClass对象在内存中都有自己独立的成员变量data的副本。当一个成员函数printData被调用时,它是通过特定的对象来调用的。例如,假设有两个MyClass对象obj1obj2obj1.printData();obj2.printData();。编译器会将调用函数的对象的地址作为隐含参数传递给成员函数。这样,printData函数在执行时,就知道要访问哪个对象的data成员变量。
  2. this指针的作用
    • this指针是一个隐含在每一个非静态成员函数中的指针。它指向调用该成员函数的对象。在printData函数内部,如果要显式访问data成员变量,可以写成this->data。例如,void MyClass::printData() { std::cout << this->data << std::endl; }。通过this指针,成员函数可以明确地操作调用它的对象的成员变量,从而实现对不同对象的data成员变量的区分和访问。