NSFX手册的学习(1)

拥有回忆 提交于 2020-01-10 12:22:43

       (边学手册边学C++)

         组件的行为由组件所提供和使用的接口决定。组件通过一系列的接口来实现其函数功能的。目标模型的根接口是IObject。每一个接口一定直接或间接地从IObject衍生出来。每一个组件都一定会应用到IObject。

         我们来看下面这个例子:class IObject

{
public:
    virtual ~IObject(void) BOOST_NOEXCEPT {}

    virtual refcount_t AddRef(void) = 0;
    virtual refcount_t Release(void) = 0;
    virtual void*      QueryInterface(const Uid& iid) = 0;
};IObject这个类定义了四个虚函数。---------------我们来看一下关于虚函数的知识:*虚函数是为了实现多态性的。*基类指针只能访问派生类的成员变量,但是不能访问派生类的成员函数。为了让基类指针能够访问派生类的成员函数,c++增加了虚函数。使用虚函数非常简单,只需要在函数声明前面增加virtual关键字。*有了虚函数,基类指针指向基类对象时就使用基类的成员(包括成员函数和成员变量),指向派生类对象时就使用派生类的成员。*换句话说,基类指针可以按照基类的方式来做事,也可以按照派生类的方式来做事,它有多种形态,或者说有多种表现方式,我们将这种现象称为多态(Polymorphism)。同一条语句可以执行不同的操作,看起来有不同表现方式,这就是多态。*C++中虚函数的唯一用处就是构成多态。虚函数是根据指针的指向来调用的,指针指向哪个类的对象就调用哪个类的虚函数。*只需要一个指针变量 p 就可以调用所有派生类的虚函数。*对于具有复杂继承关系的大中型程序,多态可以增加其灵活性,让代码更具有表现力。----------------    回到IObject,前两个虚函数定义了基于管理生命周期的计数参考函数。最后一个函数用于询问组件的所有接口。也就是说通过QueryInterface()使得用户获得关于组件的接口。每一个接口都有一个独特的ID,ID号在字面上看是一个字符串,有别于128个bit的UID(通用唯一识别码)。     Ptr作为智能指针,通过使用AddRef()和Release()来管理组件的生命周期,并且它还可以调用
QueryInterface()来自动获得组件的接口。
参考文章:http://c.biancheng.net/view/2294.htmlhttps://github.com/Fuzzier/nsfx/blob/tutorials/tutorials.md
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!