/*
* 虚函数的三种调用
* 1: 指针
* 2: 引用
* 3: 对象(不能实现多态)
*/
#include <iostream>
#include <typeinfo>
using namespace std;
//继承,默认情况下class是私有继承 struct默认是公有继承
//虚函数可以调用成员函数
//多态调用依赖于指针 或 引用调用
//对象的调用有副本机制,会调用拷贝构造 拷贝一个父类 无法实现多态
//p->go(); //多态调用
//p->myclass::go(); //原生调用
//虚函数重载和返回值无关 和参数的类型 个数 顺序有关
//虚函数被继承下来了还是虚函数
//如果要使用被继承的虚函数 不允许出现虚函数重载和覆盖
//多态可以跨类 爷爷辈的指针 可以存储孙子辈的地址 父辈拔针的地址
class myclass
{
public:
int i;
virtual void go()
{
i = 0;
show();
}
void show()
{
std::cout << "myclass->show()" << std::endl;
}
virtual ~myclass()
{
// 不加virtual 会造成内存泄漏
}
};
class newmyclass: public myclass
{
public:
void go()
{
std::cout << "newmyclass->go()" << std::endl;
}
void show()
{
std::cout << "newmyclass->show()" << std::endl;
}
void put()
{
std::cout << &#
虚函数的一点探索之一
最新推荐文章于 2021-05-29 13:38:48 发布
本文探讨了C++中的虚函数机制,详细解释了虚函数的作用、如何使用以及其在多态性中的关键角色。通过实例分析,展示了虚函数如何在继承体系中实现动态绑定,以实现更灵活的代码设计。
摘要由CSDN通过智能技术生成