2010年10月13日星期三

论继承

继承
2007-06-23 20:33


以下就算是自己看jjh先生的《深入浅出MFC》的笔记吧
一.继承
1.派生类继承基类时,会将基类的成员函数和成员变量也继承下来。
2.关于this指针
对于以下一段代码,
class CShape
{
private:
int m_color;
public:
void setColor( int color) { m_color = color;}
};
class CRect : public CShape
{
public:
void display(){…}
};
假如拥有两个CRect实例的rect1和rect2的话,当你调用:
rect1.setColor(2);
rect2.setColor(3);
时,编译器实际上为你做出来的代码是:
CRect::setColor(2, (CRect*) &rect1);
CRect::setColor(3, (CRect*) &rect2);
这多出来的参数,就是所谓的this指针。而在类的定义之中,成员函数的定义被编译器变成了:
class CShape
{
private:
int m_color;
public:
void setColor( int color,(CShape*)this ) { this->m_color = color;}
};
this指针确保了同一类(此处是CRect类)的不同实例对象(此处两个对象是rect1和rect2)在调用同一个函数(此处是setColor())时能找到正确的作用对象,即不会混淆rect1的m_color和rect2的m_color。

没有评论: