C++基础之关键字virtual

虚函数,继承关系中完成多态。

#include <memory>
#include <iostream>
#include <string>

class Base {
    virtual void set(int num) = 0;
};

class A : public Base {
public:
    A() {}
    virtual ~A() {}
    virtual int get() { return a; }
    virtual void set(int num) { a = num; }
   
private:
    int a = 1;
};

class AA : public A{
public:
    AA() {}
    virtual ~AA() {}
    virtual int get() override { return aa; }
    virtual void set(int num) override { aa = num; }

private:
    int aa = 11;
};

int main()
{
    //Base *base = new Base(); error

    A *a = new A();
    std::cout << a->get() << std::endl;
    delete a;

    AA *aa = new AA();
    std::cout << aa->A::get() << std::endl;
    std::cout << aa->get() << std::endl;
    delete aa;

    A *aA = new AA();
    std::cout << aA->A::get() << std::endl;
    std::cout << aA->get() << std::endl;
    delete aA;

    getchar();
    return 0;
}

/*
virtual: 
1
1
11
1
11
*/

猜你喜欢

转载自blog.csdn.net/qccz123456/article/details/81093065