/************************************************************************ *You can refer to inherited members (base class members) as if they were members of the derived class:
* ************************************************************************/
// This example illustrates references
// to base class members.
class base
{
public:
int a,b;
};
class derived : public base
{
public:
int c;
};
void main()
{
derived d;
d.a = 1; // base::a
d.b = 2; // base::b
d.c = 3; // derived::c
}
/************************************************************************ *
The derived class can also add new class members and redefine existing base class members. In the above example, the two inherited members , a and b, of the derived class d, in addition to the derived class member c, are assigned values.
For example:
* ************************************************************************/
// This example illustrates references to base class
// members with the scope resolution (::) operator.
#include <iostream.h>
class base
{
public:
char* name;
void display(char* i) {cout << i << endl;}
};
class derived : public base
{
public:
char* name;
void display(char* i){cout << i << endl;}
};
void main()
{
derived d; // create derived class object
d.name = "Derived Class"; // assignment to derived::name
d.base::name = "Base Class"; // assignment to base::name
// call derived::display(derived::name)
d.display(d.name);
// call base::display(base::name)
d.base::display(d.base::name);
}
/************************************************************************ *
In the following example, d, a pointer to a
derived class object is assigned to bptr, a pointer to a base class
object. A call is made to display() using bptr. Even though bptr has a type
of pointer to base, in the body of display() the name member of derived
is manipulated:
* ************************************************************************/
// This example illustrates how to make a pointer
// to a derived class point to a base class.
#include <iostream.h>
class base
{
public:
char* name;
void display(char* i) {cout << i << endl;}
};
class derived : public base
{
public:
char* name;
void display(char* i){cout << i << endl;}
};
void main()
{
derived d;
// standard conversion from derived* to base*
base* bptr = &d;
// call base::display(base::name)
bptr->display(bptr->name);
}