请问VC中为何大量使用"->"调用成员函数而很少使用对象加点调用呢?这样做有哪些好处呢? to AlphaOne(总是第一个倒下) :这我知道。问题是"->"方式有哪些好处呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 指针转成引用来用是一样的,比如:CDC& dc=*GetDC(); to Suddy(风) :什么意思?这么大惊小怪地?! 其实这个问题很简单,因为大多数的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指向别的派生类对象} 怎样批量操作进度条控件 求助,关于校验和的源码 谢谢各位高手对tjsniper1的帮助 socket发送和接收顺序执行问题,请高手指点 怎么样实现对并口的读写? UTF-8转GB2312的问题 关于CToolBar的问题 怎样去掉应用程序在任务栏的标题按钮----在线等待。 各位大哥大姐小弟小妹,HELP ME 请问如何设计实现类似word显示最近打开文档的菜单的功能? 请问看VC源码时怎样才能方便地知道哪些是向导自动生成的代码,哪些是以后写进的代码? 询问wyzegg
CDC& dc=*GetDC();
什么意思?
这么大惊小怪地?!
然而,为什么微软喜欢在函数中返回指针呢?
我认为,有如下几个优点:
1.指针是需占用4个字节的内存,这比返回整个对象减少了内存的消耗。
2.当函数返回时,是通过值传递的(用&修饰的除外),如果返回大的对象时会占用很多的时间在内存的拷贝上,通过使用指针可减少返回期的时间开销。
3.通过结合C++中的多态性和虚拟函数,这样可写出十分简结的代码。请看以下例子:
CBase* pBase;//声名pBase为指向CBase类型对象的指针
for (.........;pBase!=NULL;...........)
{
pBase=GetDerivedClassObject();//使pBase指向一个派生类的指针
.............
pBase->Serialize();//重点就在这儿。通过调用同一个Serialize()函数对不同的对象进行序列化。(可记得C++中的多态性各虚拟函数吗?)
..............
pBase=pBase->GetNextObject();//使pBase指向别的派生类对象
}