#include <iostream>
using namespace std;
//多态
/*
virtual关键字 可以修改成原函数,为了完成虚函数的重写,满足多态的条件之一
可以在菱形继承中,解决数据的冗余
1.虚函数的重写
2.父类对象的指针或者引用去调用虚函数
满足多态:跟指向对象有关,指向哪个对象调用就是他的虚函数
不满足多态:跟调用对象的类型有关,类型是什么调用的就是谁的虚函数
*/
class Pesrson{
public:
virtual void buy()
{
cout<<"person 虚"<<endl;
}
~Pesrson()
{
cout<<"析构函数 Person"<<endl;
}
};
class Student: public Pesrson{
public:
virtual void buy()
{
cout<<"Student 虚"<<endl;
}
~Student(){
cout<<"student 析构"<<endl;
}
};
//必须指针与引用
void Func(Pesrson &p)
{
p.buy();
}
void test01(){
//Pesrson p;
//Func(p);
Pesrson * p = new Student;
delete p;
// Student s;
// Func(s);
}
/*
抽象类不能实例化出对象
*/
class Car{
public:
virtual void Drive() = 0;
};
class Benz:public Car{
public:
void Drive(){
cout<<"本田"<<endl;
}
};
void test02()
{
Benz B;
B.Drive();
}
int main() {
test02();
std::cout << "Hello World!\n";
}
day23
最新推荐文章于 2024-08-06 20:47:49 发布