在《COM技术内幕》P168页介绍了智能指针,有如下代码
class CFoo{
public:
virtual void Bar();
};
class CFooPointer{
private:
CFoo *m_p;
public:
CFooPointer(CFoo *p){m_p=p;}
CFoo * operator -> (return m_p;)
};
void Funky(CFoo *pFoo)
{
CFooPointer spFoo(pFoo);
spFoo->Bar();
}
请问在最后一句spFoo->Bar()是怎么回事?是写成(pFoo.operator->())Bar()还是(pFoo.operator->()).Bar(),后面有一个点。实在不明白怎么就调用Bar了。
class CFoo{
public:
virtual void Bar();
};
class CFooPointer{
private:
CFoo *m_p;
public:
CFooPointer(CFoo *p){m_p=p;}
CFoo * operator -> (return m_p;)
};
void Funky(CFoo *pFoo)
{
CFooPointer spFoo(pFoo);
spFoo->Bar();
}
请问在最后一句spFoo->Bar()是怎么回事?是写成(pFoo.operator->())Bar()还是(pFoo.operator->()).Bar(),后面有一个点。实在不明白怎么就调用Bar了。
解决方案 »
- SP网关接收deliver短信时的问题,急!急!急!
- 想买二手路由器2个,作毕业设计实验用!
- 请高手看看这段代码 服务器端监听时为何报错(CSocket编的聊天程序)
- 怎样给按钮添加ICON图片(在线等)
- 谁给我讲讲?
- 如何上传文件到软件下载区
- 使用"变量名=0"的方式却不能使编辑框中的值变为0,为什么?
- 这样实现的电子签章的透明处理算法达到了要求,但是刷新有问题,大家帮忙看看
- 在VS2005中ACTIVEX控件在关联变量同时怎么样关联外部属性啊?以前VC6是有地,但2005无这个选项.....
- 关于server能够不断accept客户端发起的connect请求的实现方法?
- 关于图像旋转的问题?(在线)
- 使用GetQueuedCompletionStatus时的困惑?
这个问题我也思考过,我想可能是->操作符与其它的操作符重载上有区别。
CFoo * operator -> (return m_p;)//这里只是重载了->
//目的是暴露CFoo的对象而已CFooPointer spFoo(pFoo);
spFoo->Bar(); //这里实际是先通过operator -> 暴露出CFoo对象,最后m_p->Bar(); 朋友: 欢迎你加入COM阵营,但有一点,你的跨度太大了~~~~
许多C++的问题有时间要多补补问题:
1.为什么要使用智能指针?
2.使用智能指针什么时候可能会出问题,需要注意?
学问题的时候,最好想一想~~~~~~~~~~~~蓦然回首,我靠,原来这么简单~~~~~~~~~
一直想学COM的,但水平太菜,C++也只是勉强,还请大牛们多多关照。