虚函数,继承关系中完成多态。
#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
*/