zoukankan      html  css  js  c++  java
  • STDMETHOD_,STDMETHOD,__declspec(novtable)和__declspec(selectany)

    1.STDMETHOD_(ULONG, AddRef)() PURE;

    STDMETHOD_:定义一个返回指定类型的虚方法,

    STDMETHOD:定义一个返回HRESULT类型的虚方法, PURE : = 0;即 纯虚函数。

    STDMETHODIMP:定义了一个返回HRESULT的接口函数。
      #define STDMETHODIMP     HRESULT STDMETHODCALLTY

    STDMETHODIMP_:定义了一个返回指定类型的接口函数。
      #define STDMETHODIMP_(type)     type STDMETHODCALLTYPE

    2.__declspec(novtable) :就是让类不要有虚函数表以及对虚函数表的初始化代码, 这样可以节省运行时间和空间. 但是这个类一定不允许生成实例, 因为没有虚函数表, 就无法对虚函数进行调用. 因此, __declspec(novtable)一般是应用于接口(其实就是包含纯虚函数的类), 因为接口包含的都是纯虚函数, 不可能生成实例. 我们把 __declspec(novtable)应用到接口类中, 这些接口类就不用包含虚函数表和初始化虚函数表的代码了. 它的派生类会自己包含自己的虚函数表和初始化代码。

    3.__declspec(selectany) :selectany可以让我们在.h文件中初始化一个全局变量而不是只能放在.cpp中。比如有一个类,其中有一个静态变量,那么我们可以在.h中通过类似__declspec(selectany) type class::variable = value;这样的代码来初始化这个全局变量。既是该.h被多次include,链接器也会为我们剔除多重定义的错误。对于template的编程会有很多便利。

  • 相关阅读:
    jquery图片播放弹出插件Fancybox
    D3js-API介绍【英】
    ZOJ 3156 Taxi (二分匹配+二分查找)
    linux权限之su和sudo的差别
    CareerCup之1.6 Rotate Image
    [oracle]pl/sql --分页过程demo
    已迁移到http://www.coffin5257.com
    C# 之 集合ArrayList
    Java 序列化Serializable具体解释(附具体样例)
    Android 短信验证码控件
  • 原文地址:https://www.cnblogs.com/JczmDeveloper/p/3527316.html
Copyright © 2011-2022 走看看