现在的位置: 首页 > 自动控制 > 工业·编程 > 正文

虚函数为何定义为保护类型以及与纯虚函数的比较

2012-11-25 09:11 工业·编程 ⁄ 共 620字 ⁄ 字号 暂无评论

    在定义一个基类时, 应该把虚函数定义为protected: 类型, 这样基类的对象不能直接调用该接口。而把开放与否的控制权交给子类。在子类里如果把该接口重新定义为public则开放, 否则依然不对外开放。

    在类的定义中, 如果是虚函数应该尽量定义其为保护类型。如果不是虚函数应尽量定义为共有类型。

虚函数的作用:
       为什么要定义虚函数,是因为在设计基类的时候, 需要把不同子类的共同行为归结为一个接口,不同的子类可以重新去实现这个接口, 定义不同的行为细节。举个现实中的例子, 很多人都有手机了,手机大都具有发短消息的功能,定义为SendSM(), 而具体到不同的手机, 这个功能就有很大差别, 譬如有的可以发文本短信, 有的可以发"彩信", 更有的可以发“声音””视频“短信。那么我们在设计手机这个基类时,就很有必要把SendSM()这个功能接口定义为虚函数,当描述不同的手机时,具体的去定义到底发什么类型的短信。
        C++里的多态特性,就是靠着虚函数实现的。
虚函数与纯虚函数的比较:
       1 如果一个类里面有了一个或一个以上的纯虚函数, 那么这个类叫做”虚基类“。虚基类只能被重载,不能被实例化。而虚函数可以被实例化。
       2 纯虚函数只能用来被继承接口。虚函数可以被用来继承接口和默认行为。
       3 virual void SendSM() = 0;  纯虚函数 
         virual void SendSM();      虚函数

给我留言

留言无头像?