vue做网站的优缺点,江苏嘉隆工程建设有限公司网站,如何让自己做的网站让别人看到,网站开发和软件开发归纳编程学习的感悟#xff0c; 记录奋斗路上的点滴#xff0c; 希望能帮到一样刻苦的你#xff01; 如有不足欢迎指正#xff01; 共同学习交流#xff01; #x1f30e;欢迎各位→点赞 #x1f44d; 收藏⭐ 留言#x1f4dd; 成功的秘诀就在于多努力一次#xff…
归纳编程学习的感悟 记录奋斗路上的点滴 希望能帮到一样刻苦的你 如有不足欢迎指正 共同学习交流 欢迎各位→点赞 收藏⭐ 留言 成功的秘诀就在于多努力一次
一起加油 目录 一、前言
二、虚函数的声明
三、虚函数的调用 例虚函数实现动态联编。
说明
四、总结
五、共勉 一、前言 上一节中基类的指针既可以指向基类的对象又可以指向派生类的对象。但是当它指向派生类的对象时并没有按照期望调用派生类中的GetArea()函数它仍然调用基类的GetArea()函数导致运行结果出错。要解决这个问题就要用虚函数。 虚函数是实现动态联编的基础它是一种动态的重载方式它允许在运行时建立函数调用与函数体之间的联系也就是在运行时才决定如何动作即动态联编。 基类的指针指向它的公有派生对象时访问公有派生类中继承自基类的公有成员可采用显式的方法如GetArea()或采用指针强制类型转换的方法: pr;
p-GetArea(); 但这两种方法都没有达到动态调用的效果若要实现动态的调用功能需要将函数Area0声明为虚函数。 二、虚函数的声明 虚函数是一个在基类中声明为 virtual的函数并在一个或多个派生类中被重新定义的成员函数虚函数的声明格式如下: virtual 返回值类型函数名(参数表); 虚函数的定义非常简单就是基类的函数加上一个 virtual说明基类中声明为 virtual的函数一般在派生类中需要重新定义。 在重新定义时参数的类型和个数必须相同一旦一个函数被声明为虚函数则无论声明它的类被继承了多少层在每一层派生类中该函数都继续保持虚函数特性。
三、虚函数的调用 如果某个类中一个成员函数被说明为虚函数意味着该成员函数在派生类中可能有不同的函数实现当使用对象指针或对象引用调用虚函数时采用动态联编方式即在运行时进行关联或绑定。 例虚函数实现动态联编。
#includeiostream
using namespace std;
class mybase
{private:int a,b;public:mybase(int x,int y):a(x),b(y){ }virtual void show(){cout基类 mybaseendl;couta bendl; }
};
class myclass:public mybase
{private:int c;public:myclass(int x,int y,int z):mybase(x,y),c(z){ }void show(){cout派生类 myclassendl;coutccendl; }
};
int main()
{mybase mb(50,50),*pm;myclass mc(10,20,30);pmmb;pm-show();pmmc;pm-show();return 0;
} 说明 (1)虚函数与重载不同虚函数参数类型个数完全相同。 (2)定义一个基类的对象指针或者基类对象引用就可以指向不同派生类的对象同时调用不同派生类的虚函数。这就是动态联编的结果。 四、总结
虚函数的定义非常简单就是基类的函数加上一个 virtual说明基类中声明为 virtual的函数一般在派生类中需要重新定义。在重新定义时参数的类型和个数必须相同一旦一个函数被声明为虚函数则无论声明它的类被继承了多少层在每一层派生类中该函数都继续保持虚函数特性。 虚函数与重载不同虚函数参数类型个数完全相同。定义一个基类的对象指针或者基类对象引用就可以指向不同派生类的对象同时调用不同派生类的虚函数。这就是动态联编的结果。
五、共勉 以上就是我对C多态性——(3)动态联编的实现——虚函数的理解希望本篇文章对你有所帮助也希望可以支持支持博主后续博主也会定期更新学习记录记录学习过程中的点点滴滴。如果有不懂和发现问题的小伙伴请在评论区说出来哦同时我还会继续更新对C多态性的理解请持续关注我哦