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

企业网站托管后果微信朋友圈软文大全

企业网站托管后果,微信朋友圈软文大全,delphi怎么做网站,禁止粘贴的网站IMPLEMENT_DYNAMIC是实现“运行时类型识别”宏,与之相对应的是DECLARE_DYNAMIC(声明“运行时类型识别”宏)。也就是说你在.CPP文件中如果看见有IMPLEMENT_DYNAMIC,则在.H文件中必定有DECLARE_DYNAMIC的声明。 DECLARE_DYNAMIC/DEClARE_DYNAMIC是为了确定…
IMPLEMENT_DYNAMIC是实现“运行时类型识别”宏,与之相对应的是DECLARE_DYNAMIC(声明“运行时类型识别”宏)。也就是说你在.CPP文件中如果看见有IMPLEMENT_DYNAMIC,则在.H文件中必定有DECLARE_DYNAMIC的声明。


DECLARE_DYNAMIC/DEClARE_DYNAMIC是为了确定运行时对象属于哪一个类而定义的宏。
DEClARE_DYNCREATE/IMPLEMENT_DYNCREATE是为了“动态创建"类的实例而定义的宏。new可以用来创建对象,但不是动态的。比如说,你要在程序中实现根据用户输入的类名来创建类的实例,下面的做法是通不过的:
char szClassName[60];
cin >> szClassName;
CObject* pOb=new szClassName; //通不过
这里就要用到DEClARE_DYNCREATE/IMPLEMENT_DYNCREATE定义的功能了。 

 

说明:这两个宏的主要目的,是在所指定的class(比如CView)的声明和实现里,加上一些静态成员函数和静态成员变量。所以,不要管“\”这个换行标志,就把里面的每一句话当作是在类里的声明或者是实现。另外,“##”和"#"符号我就不不赘述了。
另外,建议结合《深入浅出MFC》这本书,JJHou写了一些展开宏的实例,结合实例看这个解释可能效果会比较好一点:)

 

DECLARE_DYNAMIC/IMPLEMENT_DYNAMIC

 

#define DECLARE_DYNAMIC(class_name)\   
public:\
    static CRuntimeClass class##class_name;\
    //声明一个类型为CRuntimeClass的静态public成员变量,变量名是由字符串"class"
    //与所指定的类的类名组成。举例而言,如果你写DECLARE_DYNAMIC(CMyView),则等于声明了一个
    // static CRuntimeClass classCMyView静态变量

 

    virtual CRuntimeClass* GetRuntimeClass() const;\
    //声明一个虚函数,函数名为GetRuntimeClass,返回值为CRuntimeClass类型的指针
    //无参数,并且是个const函数

 

#define IMPLEMENT_DYNAMIC(class_name,bass_class_name)\
       _IMPLEMENT_RUNTIMECLASS(class_name,base_class_name,0xFFFF,NULL)

 

#define _IMPLEMENT_RUNTIMECLASS(class_name,base_class_name,wSchema,pfnNew)\
    static char _lpsz##class_name[]= #class_name;\
    //定义一个C类型字符串静态变量,变量名由"_lpsz"和指定类的类名组成,变量值为该指定类型的名字
    //比如是CMyView,那么定义的就是static char _lpszCMyView="CMyView";

 

    CRuntimeClass class_name::class##class_name = {\
        _lpsz##class_name,sizeof(class_name),wSchema,pfnNew,\
            RUNTIME_CLASS(base_class_name),NULL};\
    //给之前在DECLARE_DYNAMIC里定义的CRuntimeClass类型的静态成员变量赋值
    //当然,除最后一个m_pNextClass没有赋值(赋值为NULL,它由下面的结构处理)

 

    static AFX_CLASSINIT _init_##class_name(&class_name::class##class_name);\
    //初始化一个名为"_init_##class_name"的AFX_CLASSINIT静态结构,主要作用是给指定的class_name的
    //class##class_name静态变量的最后一个成员m_pNextClass赋值,具体见下面解释AFX_CLASSINIT中

 

    CRuntimeClass* class_name::GetRuntimeClass() const\
        { return &class_name::class##class_name;}\
    //之前在DECLARE_DYNAMIC里定义的GetRuntimeClass的实现,很简单,就一个return语句。

 

#define RUNTIME_CLASS(class_name)\
        (&class_name::class##class_name)
//这部分之所以单独define出一个宏,主要是为了方便从某个指定的class直接得到它的CRuntimeclass静态成员

 

//以下是解释AFX_CLASSINIT结构,注意,这不是一个宏
//为了看得更加清楚,我按照struct定义的惯常格式来写这个struct的定义
struct AFX_CLASSINIT {
    AFX_CLASSINIT(CRuntimeClass *pNewClass);
};

 

AFX_CLASSINIT::AFX_CLASSINIT(CRuntimeClass *pNewClass)
{
    pNewClass->m_pNextClass = CRuntimeClass::pFirstClass;
    //让m_pNextClass指向pFirstClass所指的CRuntimeClass变量

    CRuntimeClass::pFirstClass = pNewClass;
    //让pFirstClass指向pNewClass所指的变量,也就是本class的CRuntimeClass静态变量
}


http://www.yayakq.cn/news/208737/

相关文章:

  • 湖北省建设厅质监站网站仙居县建设规划局网站
  • 北京网站建设开发网页设计与制作课程相关信息
  • 网站推广位怎么设置做刷单网站违法吗
  • 网站建设外包注意什么wordpress 会员 下载
  • 网站建设维护工作经验温州专业网站开发网站设计
  • 大淘客官网做的网站打不开网页制作三剑客即
  • 广告公司做网站专业房地产网站建设
  • 义乌公司网站软件开发项目总结
  • 利搜网站排名软件做网站来钱快
  • 网站的优点和缺点山西省建设厅网站
  • 仿hao123的导航网站纯静态版|html导航网站源码做空eth网站
  • 企业营销推广型网站建设wordpress另一更新进行中
  • 学校网站开发工程师商业网站设计方案模板
  • 广陵区建设局网站凡客t恤
  • 东莞做网站定制阿里指数网站
  • 北京最大专业网站建设腾讯邮箱网页版登录
  • 学做网站论坛VIP怎么样软文推广代写代发
  • 网站什么也没动怎么不收录啦设计师常用的图片网站
  • 电商网站建设开发的语言有哪些仿win8 html5微网站纯手工代码
  • 用本地机器做网站服务器大学网页设计作业
  • 网站建设方案的摘要福建省住房建设厅网站
  • 谁需要做网站的嘉兴如何布置网站
  • 石家庄网站网站建设室内设计公司排名十强
  • 网站开发者的常用工具百度seo快速排名优化服务
  • 财务公司代理记账怎么收费长沙正规竞价优化服务
  • 江门网站建设维护宁波网站建设联系方法
  • 网站素材大全齐鲁石化建设公司官网
  • wordpress文章都展现在一个页面商城网站优化
  • 网站开发给网站设置图标在什么文件中写代码网站开发技术包括什么
  • 宁波搭建网站公个人网站建设优化