https://www.bilibili.com/video/BV1VJ411M7WR?p=28
#include <iostream>
class Parent{
public:
virtual std::string getName(){
return "Parent";
}
};
class Child:public Parent{
private:
std::string m_name;
public:
Child(const std::string& name):m_name(name){
}
std::string getName(){
return m_name;
}
};
int main(){
Parent *p =new Parent();
std::cout<<p->getName()<<std::endl;
Child *c=new Child("Mitchell");
std::cout<<c->getName()<<std::endl;
Parent * test=c;//需要在parent中定义为虚函数 不然这里虽然赋值的是child实例 但是还是当作parent对象了
std::cout<<test->getName()<<std::endl;
}
纯虚函数 pure virtual function
#include <iostream>
class Parent{
public:
virtual std::string getName()=0;//在基类中的纯虚函数 只是给出了函数的声明而没有实现 包含纯虚函数的类称为抽象类
//
};
class Son:public Parent{
public:
std::string getName() {
return "name";
}
};
int main(){
Son a;//如果在子类中没有对纯虚函数进行重写 子类无法创建实例
}