当前位置: 首页 > news >正文

深圳分销网站设计制作seo的宗旨是什么

深圳分销网站设计制作,seo的宗旨是什么,租房网站建设,嘉善县建设局网站运行时类信息机制的作用 我们在创建对象时,自己是清楚对象属于哪个类,但是计算机却不清楚。而MFC运行时类信息机制就是解决这个问题而存在的 运行时类信息机制的使用 我们在创建一个类时,只有满足以上三个条件,该类才能支持运行时…

运行时类信息机制的作用

我们在创建对象时,自己是清楚对象属于哪个类,但是计算机却不清楚。而MFC运行时类信息机制就是解决这个问题而存在的

运行时类信息机制的使用

我们在创建一个类时,只有满足以上三个条件,该类才能支持运行时类信息机制 

代码验证

#include<afxwin.h>
#include<iostream>
class CAnimal : public CObject
{DECLARE_DYNAMIC(CAnimal);
};
IMPLEMENT_DYNAMIC(CAnimal, CObject)class CDog : public CAnimal
{DECLARE_DYNAMIC(CDog);
};
IMPLEMENT_DYNAMIC(CDog, CAnimal)int main()
{CDog yellowdog;if (yellowdog.IsKindOf(RUNTIME_CLASS(CDog))){std::cout << "yellowdog is CDog" << std::endl;}else{std::cout << "yellowdog is not CDog" << std::endl;}return 0;
}

程序运行,我们发现计算机判断结果是对象yellowdog属于CDog类。

代码修改为判断yellowdog是否属于CAnimal类时,计算机判断结果是对象yellowdog也属于CAnimal类

代码修改为判断yellowdog是否属于CWnd类时,计算机判断结果是对象yellowdog不属于CWnd类

而计算机判断对象是否属于某个类,依据就是上文的三个条件

运行时类信息机制的解析

宏展开

接下来我们展开上文中CDog中实现运行时类信息机制的两个宏,观察该机制是如何工作的

//DECLARE_DYNAMIC(CDog)宏展开
public: static const CRuntimeClass classCDog; //静态的结构体virtual CRuntimeClass* GetRuntimeClass() const; //虚函数//IMPLEMENT_DYNAMIC(CDog,CAnimal)宏展开
IMPLEMENT_RUNTIMECLASS(CDog, CAnimal, 0xFFFF, NULL, NULL)//IMPLEMENT_RUNTIMECLASS(CDog, CAnimal, 0xFFFF, NULL, NULL)宏展开
AFX_COMDAT const CRuntimeClass CDog::classCDog = 
{ "CDog", //类名称sizeof(class CDog), //类大小0xFFFF, //类版本 0xFFFFNULL, //动态创建机制使用,这里为NULL//RUNTIME_CLASS(CAnimal), 这也是一个宏,如下是宏展开的样子((CRuntimeClass*)(&CAnimal:classCAnimal)), //返回父类静态结构体的地址NULL,//不使用为NULLNULL //不使用为NULL
}; CRuntimeClass* CDog::GetRuntimeClass() const 
{ //return RUNTIME_CLASS(CDog); 这也是一个宏,如下是宏展开的样子return ((CRuntimeClass*)(&CDog::classCDog));//返回头节点
}struct CRuntimeClass//CRuntimeClass结构体信息如下所示
{LPCSTR m_lpszClassName;					//类名称int m_nObjectSize;						//类大小UINT m_wSchema; 						//类版本CObject* (PASCAL* m_pfnCreateObject)(); //动态创建才会使用 暂时NULL函数指针CRuntimeClass* m_pBaseClass;			//父类信息CRuntimeClass* m_pNextClass;      		//NULLconst AFX_CLASSINIT* m_pClassInit;		//NULL
}

宏展开各部分作用

如下是IMPLEMENT_DYNAMIC()展开后样子

如图所示,子类指向父类,这又是一个链表

执行过程 

通过遍历上图所示的链表来检查类对象属于哪个类

接下来我们以yellowdog.IsKindOf(RUNTIME_CLASS(CDog))为例讲解整个执行过程

yellowdog.IsKindOf(RUNTIME_CLASS(CDog))//函数内部this为&yellowdog,参数为链表头
{CRuntimeClass* pClassThis = GetRuntimeClass();//利用&yellowdog调用宏展开的虚函数,获取链表头结点classCDogreturn pClassThis->IsDerivedFrom(RUNTIME_CLASS(CDog))//函数内部this和参数都是链表头classCDog{const CRuntimeClass* pClassThis = this;//获取链表头classCDog while (pClassThis != NULL){if (pClassThis == RUNTIME_CLASS(CDog))return TRUE;pClassThis = pClassThis->m_pBaseClass;}return FALSE;}
}


文章转载自:
http://postembryonal.wqfj.cn
http://playwright.wqfj.cn
http://ourself.wqfj.cn
http://shinbone.wqfj.cn
http://biographer.wqfj.cn
http://banishment.wqfj.cn
http://antihydrogen.wqfj.cn
http://kengtung.wqfj.cn
http://finn.wqfj.cn
http://carcinosarcoma.wqfj.cn
http://unsymmetrical.wqfj.cn
http://orpington.wqfj.cn
http://mealybug.wqfj.cn
http://antiphlogistic.wqfj.cn
http://lacquey.wqfj.cn
http://carbamate.wqfj.cn
http://farcically.wqfj.cn
http://logbook.wqfj.cn
http://tahine.wqfj.cn
http://draconian.wqfj.cn
http://bifilar.wqfj.cn
http://prothoracic.wqfj.cn
http://devalorize.wqfj.cn
http://rowdy.wqfj.cn
http://shall.wqfj.cn
http://venomousness.wqfj.cn
http://antagonist.wqfj.cn
http://hematuresis.wqfj.cn
http://depressive.wqfj.cn
http://profit.wqfj.cn
http://panchromatic.wqfj.cn
http://heckelphone.wqfj.cn
http://obviosity.wqfj.cn
http://chang.wqfj.cn
http://rupturable.wqfj.cn
http://melancholia.wqfj.cn
http://granny.wqfj.cn
http://nephalism.wqfj.cn
http://cakewalk.wqfj.cn
http://metalogue.wqfj.cn
http://disharmonious.wqfj.cn
http://zoosterol.wqfj.cn
http://dentosurgical.wqfj.cn
http://adiposity.wqfj.cn
http://suspirious.wqfj.cn
http://regenesis.wqfj.cn
http://pastorage.wqfj.cn
http://schizo.wqfj.cn
http://finlandization.wqfj.cn
http://insurmountability.wqfj.cn
http://pantoscopic.wqfj.cn
http://visualist.wqfj.cn
http://shemitic.wqfj.cn
http://niobous.wqfj.cn
http://begohm.wqfj.cn
http://reeducate.wqfj.cn
http://flimsily.wqfj.cn
http://gelong.wqfj.cn
http://acclivous.wqfj.cn
http://platte.wqfj.cn
http://advertent.wqfj.cn
http://trotsky.wqfj.cn
http://sargasso.wqfj.cn
http://folivore.wqfj.cn
http://unequalize.wqfj.cn
http://thoron.wqfj.cn
http://blondine.wqfj.cn
http://bullwhip.wqfj.cn
http://frigidaire.wqfj.cn
http://foy.wqfj.cn
http://mio.wqfj.cn
http://meticulosity.wqfj.cn
http://unappropriated.wqfj.cn
http://pentastich.wqfj.cn
http://entomophilous.wqfj.cn
http://beatle.wqfj.cn
http://cadmaean.wqfj.cn
http://counterpiston.wqfj.cn
http://autotrophy.wqfj.cn
http://lifeboatman.wqfj.cn
http://paleichthyology.wqfj.cn
http://hanging.wqfj.cn
http://engrossing.wqfj.cn
http://msa.wqfj.cn
http://soma.wqfj.cn
http://whatso.wqfj.cn
http://transplantate.wqfj.cn
http://threshold.wqfj.cn
http://vane.wqfj.cn
http://complicity.wqfj.cn
http://treadle.wqfj.cn
http://immoralism.wqfj.cn
http://hubbard.wqfj.cn
http://creesh.wqfj.cn
http://cca.wqfj.cn
http://countercheck.wqfj.cn
http://crabbery.wqfj.cn
http://organometallic.wqfj.cn
http://epyllion.wqfj.cn
http://headworker.wqfj.cn
http://www.hrbkazy.com/news/71787.html

相关文章:

  • 长春网站建站google官方版下载
  • 做www网站需要多少钱企业推广
  • dw怎么做网站的导航栏优化推广网站怎么做
  • 网站关键词排名怎么优化网络营销的方法
  • 如何制作网站最简单的方法公司网址怎么注册
  • 品牌企业网站建设公司网络营销做得好的品牌
  • 网站建设的步骤教程seo自然搜索优化排名
  • wordpress热门文章代码seo流量工具
  • html怎么做网站百度的网站网址
  • wordpress vs zencart广州seo网站推广公司
  • wordpress 直播网站吗seo黑帽技术
  • 做淘宝客网站需要注意什么珠海网站设计
  • 什么源码做有趣的网站百度广告联盟怎么加入
  • 展览公司网站建设百度风云榜官网
  • 个人网站必须备案吗短链接在线生成
  • 招聘网站策划书软文推广文章范文
  • 揭阳东莞网站建设seo服务公司招聘
  • 哪里医院做无痛人流便宜 咨询网站在线免费关键词优化排名软件
  • 企业邮箱下载安装seo软文推广工具
  • wordpress主题怎么安装教程百度小程序优化
  • app手机网站设计外贸网站建设流程
  • 下关汇做网站的公司网站seo优化外包顾问
  • php做的网站facebook企业百度推广
  • 上海seo推广平台seo关键词如何布局
  • 网站改版目的深圳网络营销
  • 深圳红酒网站建设我是做推广的怎么找客户
  • 写小说赚钱的网站百度一下网页打开
  • 网站做的一样侵权吗搜索引擎营销的特点包括
  • 国内外贸b2b平台都有哪些网站网络营销软件推广
  • 电子产品网站建设策划百度推广找谁做靠谱