若有一个类声明如下
class CAnClass
{
   ......
   public:
      SetColor(int color_id);
   ......
};然后在某处使用到这个类的两个对象,如下:
CAnClass m_classA, m_classB;
m_classA.SetColor(1);
m_classB.SetColor(2);那么,编译器对此函数的解释应该是
CAnClass::SetColor(1, (CAnClass*)&m_classA);
CAnClass::SetColor(2, (CAnClass*)&m_classB);还是
SetColor((CAnClass*)&m_classA, 1);
SetColor((CAnClass*)&m_classB, 2);

解决方案 »

  1.   

    SetColor((CAnClass*)&m_classA, 1);
    SetColor((CAnClass*)&m_classB, 2);
      

  2.   

    但是侯俊杰在他的《深入浅出MFC 2/E》中提到的却是第一种解释。
    见其书第53页。
      

  3.   

    第一种,因为根据默认参数的传递原则,有默认值的参数应该从最右边开始,this指针实际上是编译器加上的
      

  4.   

    取决于编译器的实现。C++标准中并未强行规定this的具体实现。