You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

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;
}