A member function becomes a virtual function by prefixing its methods with the function specifier “virtual”.
#include <iostream>
using namespace std;
class A {
public:
virtual void print() {
cout << "class a output" << endl;
}
};
class B : public A {
public:
void print() {
cout << "class b output" << endl;
}
};
class C : public A {
public:
void print() {
cout << "class c output" << endl;
}
};
int main(void) {
A *a;
B b;
C *c;
a = &b;
a->print();
return 0;
}
class b output
#include <iostream>
using namespace std;
class A {
public:
virtual void print() {
cout << "class a output" << endl;
}
};
class B : public A {
public:
void print() {
cout << "class b output" << endl;
}
};
class C : public A {
public:
void print() {
cout << "class c output" << endl;
}
};
void output(A *c) {
c->print();
}
int main(void) {
A a;
B b;
C c;
output(&a);
output(&b);
output(&c);
return 0;
}
class a output
class b output
class c output