现在的位置: 首页 > 综合 > 正文

Interface Classes

2017年11月21日 ⁄ 综合 ⁄ 共 842字 ⁄ 字号 评论关闭

     一个接口类就是一个类:无成员变量,且在接口类中所有的函数是纯虚函数!换句话说,这个类纯定义,并且没有实际实现。

     接口类当你想定义一个函数必须在派生类中实现时是非常有用的,但是函数实现的细节完全取决于派生类。

     上述两句话来自一个外文C++学习网站。只是一个定义的简单翻译。但是究竟接口类有什么用呢?java和C#都有接口的概念。

     接口类的威力如何呢?

     本人对接口类的理解及查相关资料的可以归结如下:

     接口类只是作为一个接口不包括任何状态。

     接口类:可以常用在多接口单实现的地方。

     接口是一个没有被实现的特殊的类,它是一系列操作的集合。可以把它当作是与其他对象通信的协议。

     威力:

     Interface classes have become extremely popular because they are easy to use,easy to extend, easy to extend, and easy to maintain!

     ...........等运用熟练后在续....  


     附: 为什么纯虚函数后面要等于0 : 如

class IErrorLog
{
    virtual bool OpenLog(const char *strFilename) = 0;
    virtual bool CloseLog() = 0;
 
    virtual bool WriteError(const char *strErrorMessage) = 0;
};

    why?

   解释: 这仅仅是一种语法规则,从而使编译器知道这是纯虚函数。你也可以这样理解:普通函数当被调用时执行需要函数的具体定义代码段,而这些代码段保存在一段内存空间中,相应的,函数名本质上也是一个指针, 它指向这个代码段区域。另一方面,众所周知,纯虚函数没有函数体,从而就根本不需要内存地址来保存它,
所以0就是NULL地址。当然地址设为空也可以方便接下来在派生类使用它。就像使用指针时,释放指针的内存地址时,一般在delete ptr 语句后面加上,ptr = 0 这么一句。

    


抱歉!评论已关闭.