函数返回问题

[复制链接]
1415|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

粉丝
快速回复 在线客服 返回列表 返回顶部