打印

函数返回问题

[复制链接]
968|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
dfsa|  楼主 | 2013-11-30 08:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在《C++ PRIMER》中TextQuery的面向对象实现中,有如下语句:
inline Query operator&(const Query &lhs, const Query &rhs)
{
   return new AndQuery(lhs, rhs);
}
Q: new AndQuery(lhs, rhs)不是应该返回的是 *AndQuery吗,难道可以隐式的转换到Query类型?

相关帖子

沙发
xsgy123| | 2013-11-30 08:37 | 只看该作者
是接受一个对象地址的指针!

使用特权

评论回复
板凳
sinadz| | 2013-11-30 08:42 | 只看该作者
Query是一个句柄类。
首先Query是Query_base的友元类,而Query_base是一个虚基类,AndQuery继承自BinaryQuery,BinaryQuery继承自Query_base,从而AndQuery的指针和引用可以用Query_base的指针和引用实现多态访问,而Query作为友元,其私有数据包括Query_base的指针,从而实现一个句柄类的框架。
这里new出一个AndQuery的指针,完全可以使用Query_base指针进行多态存储,而Query的句柄意义,就在于用Query对所有继承类的指针进行管理和存储,上述return返回的时候,会隐式调用Query的构造函数,参数是Query_base指针,最后返回。

使用特权

评论回复
地板
shenmu2012| | 2013-12-5 22:29 | 只看该作者
楼上解释的非常详细的,我学习的哈

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

282

主题

2404

帖子

2

粉丝