56 lines
1.2 KiB
C++
56 lines
1.2 KiB
C++
|
A simple example using a virtual function.
|
||
|
#include <iostream>
|
||
|
using namespace std;
|
||
|
|
||
|
class BaseClass {
|
||
|
public:
|
||
|
int i;
|
||
|
BaseClass(int x) {
|
||
|
i = x;
|
||
|
}
|
||
|
virtual void myFunction()
|
||
|
{
|
||
|
cout << "Using BaseClass version of myFunction(): ";
|
||
|
cout << i << '\n';
|
||
|
}
|
||
|
};
|
||
|
|
||
|
class DerivedClass1 : public BaseClass {
|
||
|
public:
|
||
|
DerivedClass1(int x) : BaseClass(x) {}
|
||
|
void myFunction()
|
||
|
{
|
||
|
cout << "Using DerivedClass1's version of myFunction(): ";
|
||
|
cout << i*i << '\n';
|
||
|
}
|
||
|
};
|
||
|
|
||
|
class DerivedClass2 : public BaseClass {
|
||
|
public:
|
||
|
DerivedClass2(int x) : BaseClass(x) {}
|
||
|
void myFunction()
|
||
|
{
|
||
|
cout << "Using DerivedClass2's version of myFunction(): ";
|
||
|
cout << i+i << '\n';
|
||
|
}
|
||
|
};
|
||
|
|
||
|
int main()
|
||
|
{
|
||
|
BaseClass *p;
|
||
|
BaseClass ob(10);
|
||
|
DerivedClass1 derivedObject1(10);
|
||
|
DerivedClass2 derivedObject2(10);
|
||
|
|
||
|
p = &ob;
|
||
|
p->myFunction(); // use BaseClass's myFunction()
|
||
|
|
||
|
p = &derivedObject1;
|
||
|
p->myFunction(); // use DerivedClass1's myFunction()
|
||
|
|
||
|
p = &derivedObject2;
|
||
|
p->myFunction(); // use DerivedClass2's myFunction()
|
||
|
|
||
|
return 0;
|
||
|
}
|