100% found this document useful (1 vote)
874 views2 pages

Pointer To Derived Classes

1. Pointers to base classes can point to objects of derived classes, allowing a single pointer variable to point to objects of different classes. 2. However, when calling functions through a base class pointer, it will always call the base class version of functions that are defined in both base and derived classes. 3. Declaring functions as virtual in the base class solves this issue, as virtual functions call the correct overridden version based on the actual object type.

Uploaded by

Amit Kapoor
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
100% found this document useful (1 vote)
874 views2 pages

Pointer To Derived Classes

1. Pointers to base classes can point to objects of derived classes, allowing a single pointer variable to point to objects of different classes. 2. However, when calling functions through a base class pointer, it will always call the base class version of functions that are defined in both base and derived classes. 3. Declaring functions as virtual in the base class solves this issue, as virtual functions call the correct overridden version based on the actual object type.

Uploaded by

Amit Kapoor
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 2

Pointer to derived classes: - We can use pointers to point to derived classes.

Pointers to
objects of a base class are type-compatible with pointers to objects of a derived class. Therefore, a
single pointer (base class pointer) variable can be made to point to objects belonging to different
classes.
However, there is a problem in using base class pointer to access the public members of the derived
class. One such case is when functions name same in base and derived classes. When we call that
function pointer will call function defined in base not of derived class, since pointer is of base class.
Whenever we call a function using base pointer then it start searching that function from base class,
if it finds the function there, then execute that function no matter base pointer points to which
class at that time.
Solutions of above problem: -
1. Declare pointer to derived class.

Declaring two pointers for base and derived classes not provide benefit of inheritance.

2. Cast base pointer to derived type.

Complex to work with.

3. Declare that function as virtual function in the base class.

Easy method.

#include<iostream.h>
#include<conio.h>
#include<stdio.h>
//pointer to derived classes
class abc
{
int a,b;
public:
void get(void)
{
cout<<"enter a,b";
cin>>a>>b;
}
void show(void)
{
cout<<"a="<<a<<"\t"<<"b="<<b<<endl;
}
};
class xyz:public abc
{
int x,y;
public:
void get(void)
{
cout<<"enter x, y";
cin>>x>>y;
}
void show(void)
{
cout<<"x="<<x<<"\t"<<"y="<<y<<endl;
}
};
int main()
{
clrscr();
abc *p; //pointer of base class abc

abc ob1; //object of base class abc


p=&ob1; //pointer holds address of object of base class abc
p->get(); //call get() of abc
p->show(); // call show() of abc
xyz ob2; //object of derived class xyz
p=&ob2; //pointer holds address of object of derived class xyz
p->get(); //call get() of abc
p->show(); // call show() of abc
((xyz*)p)->get(); //call get() of xyz (type casting is done here)
((xyz*)p)->show(); // call show() of xyz
getch();
return 0;
}
Explanation: - In above program, the statement ((xyz*)p)->get(); will cast pointer p to
derived class xyz.

You might also like