首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

虚函数跟纯续函数区别

2013-11-23 
虚函数和纯续函数区别2011-06-21 17:10:57|??分类: CPP|字号?订阅?虚函数必须是基类的非静态成员函数,其访

虚函数和纯续函数区别
2011-06-21 17:10:57|??分类: CPP |字号?订阅

?虚函数必须是基类的非静态成员函数,其访问权限可以是 private、protected或public,为了将接口和多态分开,虚函数都应该是 private 的。STL库就遵循这个。
在基类的类定义中定义虚函数的一般形式:  
????? virtual 函数返回值类型 虚函数名(形参表)? { 函数体 }

????? class Parent
????? {
????? public:
????????? virtual void func_1() {cout<<"This is parent.";}
????????? void func_2 {cout<<"This is parent.";}
????? };

????? class Child
????? {
????? public:
???????? virtual void func_1 {cout<<"This is child.";}//这里可不写virtual关键字
???????? void func_2 {cout<<"This is child.";}
????? };

????? Parent *p = new Child;
????? p->func_1();
????? p->func_2();

????? 这里用父类的指针去指向一个子类的对象,p->func_1()会输出This is child。但是对于普通函数func_2(),就没有这种关系,因此p->func_2()还是输出This is parent,这就是 virtual 的作用。???

纯虚函数是一种特殊的虚函数,基类只定义了函数体,没有实现过程。它的一般格式如下:
?  class <类名>  
????? {
? ??? virtual <类型><函数名>(<参数表>)=0;
  …  
?   };

虚函数与纯虚函数区别

1、带纯虚函数的类称为虚基类,这种基类不能直接生成对象,而只有被继承并重写其虚函数后才能使用,这样的类叫抽象类。

2、虚函数本身有默认实现,它的作用是为了能让其在它的子类里可以被重载,以达到多态,而纯虚函数只是一个接口,仅仅是个函数声明,它必须在子类里实现。

3、虚函数在子类里也可以不重载,纯虚函数必须在子类里实现。有纯虚函数的类 不能被实例化。

?

热点排行