//Program illustrates how dynamic_cast keyword in C++ is used
#include<iostream>
#include<typeinfo>
using namespace std;
class a
{
public:
virtual void show()=0;
};
class b : public a
{
public:
void show()
{
cout<<"\nshow() in class B\n";
}
};
class c : public a
{
public:
void show()
{
cout<<"\nshow() in class C\n";
}
};
class d : public a
{
public:
void show()
{
cout<<"\nshow() in class D\n";
}
};
int main()
{
int i,j;
b b1,b2;
c c1;
d d1;
a *a1[4]={&b1,&c1,&d1,&b2};
for(i=0;i<4;i++)
{
b *b3=dynamic_cast<b *>(a1[i]);
if(b3)
{
cout<<"\nFrom B\n" ;
b3->show();
}
else
{
cout<<"\nNot From B\n";
cout<<"a1["<<i+1<<"] is pointing to"<<typeid(*a1[i]).name()<<"\n";
a1[i]->show();
}
}
return 0;
}
#include<iostream>
#include<typeinfo>
using namespace std;
class a
{
public:
virtual void show()=0;
};
class b : public a
{
public:
void show()
{
cout<<"\nshow() in class B\n";
}
};
class c : public a
{
public:
void show()
{
cout<<"\nshow() in class C\n";
}
};
class d : public a
{
public:
void show()
{
cout<<"\nshow() in class D\n";
}
};
int main()
{
int i,j;
b b1,b2;
c c1;
d d1;
a *a1[4]={&b1,&c1,&d1,&b2};
for(i=0;i<4;i++)
{
b *b3=dynamic_cast<b *>(a1[i]);
if(b3)
{
cout<<"\nFrom B\n" ;
b3->show();
}
else
{
cout<<"\nNot From B\n";
cout<<"a1["<<i+1<<"] is pointing to"<<typeid(*a1[i]).name()<<"\n";
a1[i]->show();
}
}
return 0;
}
Click here to download the C++ Program.
No comments:
Post a Comment