this指针问题,请教大家
侯捷的深入浅出中:(修改过)
class CShape
{
private:
int m_color;
public:
virtual void display(){cout<<"CShape"<<endl;}
void setcolor(int color) { m_color = color;display(); }
};
class CRect : public CShape
{
public:
void display() { cout<<"CRect"<<endl;} }
};
CRect rect1;
rect1.setcolor(2);//编译器实际生成的代码CShape::setcolor(2, (CRect*)&rect1);
_______________________________________
问题是,为什么&rect1前面要加(CRect*)? 如果这样的话this=(CRect*)&rect1,this就成了(CRect*)型的指针了,是这样吗??但是在setcolor中调用display调用的是CShape的display,也就是说setcolor中的this指针是CShape型的,那&rect1前为什么加(CRect*)??