基类指向子类对象
来源:互联网 发布:telnet带端口号 编辑:程序博客网 时间:2024/06/17 02:48
引用是除指针外另一个可以产生多态效果的手段。这意味着,一个基类的引用可以指向它的派生类实例。
【例】:
class A;
class B:public A{……};
B b;
A &Ref = b; // 用派生类对象初始化基类对象的引用
Ref 只能用来访问派生类对象中从基类继承下来的成员,是基类引用指向派生类。如果A类中定义有虚函数,并且在B类中重写了这个虚函数,就可以通过Ref产生多态效果。
创建基类指针,指向子类,这是常见和基本的c++框架
CascadeBase *pHdlr; //CscdResourceMgr *pHdlr; is subclass of class CascadeBase; CscdResourceMgr:public CascadeBasecascadeHdlrs[CASCADE_RESOURCE_HDLR].pHdlr = CscdResourceMgr::getInstance();
用各个子类分别实现,如cscdfilemgr,cscdresourcemgr etc。等于各个子类重写signalHandler。signalHandler 是虚函数.
而基类写公共的部分。然后各个子类实现自己的功能。方便协同开发。
bool CascadeMgr::handleConnctedModeMsg(union SIGNAL* &sigP)
{
hdlrType = getLinkupSignalHdlr(sigP->sigNo);
cascadeHdlrs[hdlrType].pHdlr->signalHandler(sigP);
.......
}
甚至可以重写虚函数的一部分
void CascadeBase::signalHandler(union SIGNAL* &sigP)
{
if (CascadeMgr::getInstance()->isSigFromChild(sigP))------------------基类部分
{
localOrChild = CASCADE_CONNECTION_CHILD;
}
else
{
localOrChild = CASCADE_CONNECTION_LOCAL;
}
respHandler(sigP, localOrChild, respSig);
......
}
// filemgr没有完全重写virtual 函数signalHandler,而是部分重写了signalHandler,具体的说是respHandler函数。用基类部分,用子类的重写函数.
void CascadeFileMgr::respHandler(union SIGNAL* &sigP, CascadeConnectionIdT localChild, union SIGNAL* &rspSig)
相关概念:
http://blog.csdn.net/fdsafwagdagadg6576/article/details/50780639
0 0
- 基类指向子类对象
- C++基类对象指向子类对象的现象
- java父类对象指向子类对象
- 基类指针指向子类对象改如何理解
- 基类指针指向子类对象数组的问题
- 父类引用指向子类对象
- 子类引用指向父类对象???
- 父类引用指向子类对象
- 父类引用指向子类对象
- 父类引用指向子类对象
- 父类引用指向子类对象
- 父类引用指向子类对象
- 父类引用指向子类对象
- 关于父类引用指向子类对象
- 父类的引用指向子类对象
- 父类引用指向子类对象
- 父类引用指向子类对象
- 父类引用指向子类对象
- registerNib 和 loadNibNamed
- 7. Reverse Integer
- 在Activiti中集成JPA(解决动态表单生成的大量数据)
- Android应用增量升级
- JAVA中IO技术的转换流
- 基类指向子类对象
- Struts2拦截器执行顺序
- 项目代码管理系统SVN使用教程
- Effective c++ 读书笔记
- (Educational Codeforces Round)Grandma Laura and Apples(水题)
- Gradle 打包知识整理-Android Studio
- 如何通过单击刷新图片验证码?
- php启用sockets扩展解决phpmailer发送邮件慢
- 用串口终端作为Linux系统控制台