面试题答案
一键面试printData
函数区分不同MyClass
对象中data
成员的原理:- 在C++ 中,非静态成员函数(如
printData
)都隐含一个this
指针。当通过某个对象调用成员函数时,该对象的地址会作为this
指针传递给成员函数。printData
函数内部实际上是通过this
指针来访问所属对象的data
成员的。不同对象调用printData
函数时,传递的this
指针不同,所以printData
函数能区分不同对象中的data
成员。
- 在C++ 中,非静态成员函数(如
- 代码示例:
#include <iostream>
class MyClass {
private:
int data;
public:
MyClass(int value) : data(value) {}
void printData() {
std::cout << "The data value of this object is: " << data << std::endl;
// 实际上可以写成 std::cout << "The data value of this object is: " << this->data << std::endl;
}
};
int main() {
MyClass obj1(10);
MyClass obj2(20);
obj1.printData();
obj2.printData();
return 0;
}
在上述代码中,obj1
和 obj2
是 MyClass
的两个不同对象。当 obj1.printData()
被调用时,this
指针指向 obj1
,函数输出 obj1
的 data
值(10);当 obj2.printData()
被调用时,this
指针指向 obj2
,函数输出 obj2
的 data
值(20)。