运行时多态:函数重写
普通重写和虚函数重写,一般情况区别不大,得涉及指针或者引用才会动态分发
#include <iostream>
#include <atomic>
using std::cin;
using std::cout;
using std::endl;
class People {
public:
    void say() { cout << "people say" << endl;}
    virtual void eat(){};
};
class Man : public People {
public:
    void say() { cout << "man say" << endl;}
    void eat() { cout << "man eat" << endl;}
};
int main(int argc, char* argv[]){
    Man man;
    man.say();/*man say */
    man.eat();/*man eat */
    People* man2 = new Man();
    man2 -> say();/*people say */
    man2 -> eat();/*man eat */
    People& man3 = man;
    man3.say();/*people say */
    man3.eat();/*man eat */
    People& man4 = *man2;
    man4.say();/*people say */
    man4.eat();/*man eat */
    
    return 0;
}
**总结:**普通重写和虚函数重写,一般情况区别不大,得涉及指针或者引用才会动态分发