日记

全域对象的构造将比程序进入点(在DOS 环境为main,在Windows 环境为WinMain)更早。(MFC179)

MFC 有两个十分十分重要的虚拟函数:与document 有关的Serialize 函数和与view 有关的OnDraw 函数。你应该在自己的CMyDoc 和CMyView 中改写这两个虚拟函数。

纯虚拟函数不需定义其实际动作,它的存在只是为了在衍生类别中被重新定义,只是为了提供一个多态接口。只要是拥有纯虚拟函数的类别,就是一种抽象类别,它是不能够
被具象化(instantiate)的,也就是说,你不能根据它产生一个对象(你怎能说一种形状为'Shape' 的物体呢)。CCircle 继承了CShape 之后,如果没有改写CShape 中的纯虚拟函数,那么CCircle 本身也就成为一个拥有纯虚拟函数的类别,于是它也是一个抽象类别。抽象类别不能产生出对象实体,但是我们可以拥有指向抽象类别之指针,以便于操作抽象类别的各个衍生类别。

衍生对象通常都比基础对象大(我是指内存空间),因为衍生对象不但继承其基础类别的成员,又有自己的成员。那么所谓的up casting(向上强制转型):(CDocumentmydoc,将会造成对象的内容被切割(object slicing).

RTTI(执行期类别辨识)通过使用DECLARE_DYNAMIC/IMPLENENT_DYNAMIC宏将RunTimeClass及其实现塞到自己定义的类中。如:

ClassCWinApp:public CWinThread

{

DECLARE_DYNAMIC(CWinApp)

......

};

DECLARE_DYNCREATE()动态创建

DECLARE_SERIAL 文档读取

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值