博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c++中的虚函数
阅读量:2384 次
发布时间:2019-05-10

本文共 1214 字,大约阅读时间需要 4 分钟。

作者:潜水的飞鱼baby

来源:CSDN
原文:https://blog.csdn.net/u011702002/article/details/77434297
版权声明:本文为博主原创文章,转载请附上博文链接!

虚函数:

l  虚函数是一种在基类定义为virtual的函数,并在一个或多个派生类中再定义的函数。虚函数的特点是,只要定义一个基类的指针,就可以指向派生类的对象。

注:无虚函数时,遵循以下规则:C++规定,定义为基类的指针,也能作指向派生类的指针使用,并可以用这个指向派生类对象的指针访问继承来的基类成员;但不能用它访问派生类的成员。

l 使用虚函数实现运行时的多态性的关键在于:必须通过基类指针访问这些函数。

l 一旦一个函数定义为虚函数,无论它传下去多少层,一直保持为虚函数。

l  把虚函数的再定义称为过载(overriding)而不叫重载(overloading)。

l  纯虚函数:是定义在基类中的一种只给出函数原型,而没有任何与该基类有关的定义的函数。纯虚函数使得任何派生类都必须定义自己的函数版本。否则编译报错。

l  纯虚函数定义的一般形式:

Virtual type func_name(参数列表)=0;

l  含有纯虚函数的基类称为抽象基类。抽象基类又一个重要特性:抽象类不能建立对象。但是抽象基类可以有指向自己的指针,以支持运行时的多态性。

l  虚函数范例:

#include <iostream>

#define ECHO(str) std::cout << str

#define ECHOLN(str) std::cout << str<< std::endl

/* run this program using the consolepauser or add your own getch, system("pause") or input loop */

class Base{

         public:

                       virtual void who(){

                        ECHOLN("我是基类!");

                      }

};

class deriv_1:public Base{

         public:

                   voidwho(){

                            ECHOLN("我是子类deriv_1");

                   }

                  

         };

class deriv_2:public Base{

         public:

                  void who(){

                            ECHOLN("我是子类deriv_2");

                   }

};

 

int main(int argc, char** argv) {

         classBase *b,b0;

         classderiv_1 d1;

         classderiv_2 d2;

        

         b= &b0;

         b->who();

        

         b= &d1;

         b->who();

        

         b= &d2;

         b->who();

        

         return0;

}

 

输出:

我是基类!

我是子类deriv_1
我是子类deriv_2
---------------------
 

你可能感兴趣的文章
ln 命令的用法
查看>>
dd 命令的用法
查看>>
hda1 、sda1 命名格式介绍
查看>>
mkdir 命令的用法
查看>>
FTP 登陆的常见问题与FTP命令集锦
查看>>
MySQL的mysqldump工具的基本用法
查看>>
创建VG后不能使用的问题
查看>>
史上最全的MYSQL备份方法
查看>>
架构师,存储灾备挑战
查看>>
使用expect脚本SCP拷贝文件
查看>>
mysqldump导入导出mysql数据库
查看>>
【逻辑备份】深入浅出mysqldump:常用操作、案例分享、意外终止的原因以及解决方法...
查看>>
mysqldump来备份MYSQL数据库(脚本)
查看>>
[linux shell]参数传递之空格
查看>>
FTP的匿名登录一般有三种
查看>>
PHP mysql_thread_id 返回当前线程的 ID
查看>>
shell expect 的介绍
查看>>
详述Linux ftp命令的使用方法
查看>>
生成AWR报告
查看>>
LINUX 下查找指定时间的所有文件
查看>>