to AlphaOne(总是第一个倒下) :
这我知道。
问题是"->"方式有哪些好处呢?

解决方案 »

  1.   

    指针转成引用来用是一样的,比如:
    CDC& dc=*GetDC();
      

  2.   

    to Suddy(风) :
    什么意思?
    这么大惊小怪地?!
      

  3.   

    其实这个问题很简单,因为大多数的API以及MFC类中的大多数成员函数都是通过指针的形式来返回的,所以当你通过它们再调用别的函数或处理其中的数据时,都必需通过指针->.
    然而,为什么微软喜欢在函数中返回指针呢?
    我认为,有如下几个优点:
    1.指针是需占用4个字节的内存,这比返回整个对象减少了内存的消耗。
    2.当函数返回时,是通过值传递的(用&修饰的除外),如果返回大的对象时会占用很多的时间在内存的拷贝上,通过使用指针可减少返回期的时间开销。
    3.通过结合C++中的多态性和虚拟函数,这样可写出十分简结的代码。请看以下例子:
    CBase* pBase;//声名pBase为指向CBase类型对象的指针
    for (.........;pBase!=NULL;...........)
    {
    pBase=GetDerivedClassObject();//使pBase指向一个派生类的指针
    .............
    pBase->Serialize();//重点就在这儿。通过调用同一个Serialize()函数对不同的对象进行序列化。(可记得C++中的多态性各虚拟函数吗?)
    ..............
    pBase=pBase->GetNextObject();//使pBase指向别的派生类对象
    }