this指针的原理:
this指针是一个隐含的指针,它是指向对象本身的,代表了对象的地址。一个类所有的对象调用的成员函数都是同一个代码段,那么,成员函数又是怎么识别属于不同对象的数据成员呢?原来,在对象调用pt.input(10,10)时,成员函数除了接收2个实参外,还接收到了pt对象的地址,这个地址被一个隐含的形参this指针所获取,它等同于执行this =&pt。所有对数据成员的访问都隐含地被加上了前缀 this->。例如:x = 0;等价于this -> x=0;
问题描述:
在point类中定义了一个input函数。当input函数的形参为与成员函数的实参相同,都是m_x,m_y时,pt.input(10, 10);的运行结果为5,5。错误原因见下例:
#include <iostream>
using namespace std;
class CPoint
{
public:
int m_x;
int m_y;
CPoint()
{
int m_x = 0;