Home » Interview Questions » Interviews » Story Details
Printable Version

Interview Question: What is dynamic_cast in C++

by Kamal Rawat on Jan 28, 2012

What is dynamic_cast in C++ and where is it used?
Comments: 0    Views: 457

MCN Professionals | Interview Question of the day

MCN Professionals is starting Industrial Training for MCA-2012 Batch. Have a look at our Industrial Training Program and Course Details.
-----------------------------------------------------------------------------------------------------------------------------------------

Today's Question:
What is dynamic_cast in C++. Where is it used?
Solution:
In C++ we can have inheritance hierarchy (one class inheriting from another). For example:
class Person
{
    ....
};

class Employee : public Person 
{
    ....
};
Employee is a child (or base) class of Person. If you have studied even the basic inheritance, then you must be knowing that the relation between Employee & Person class is "IS-A". i.e Employee IS-A Person. Hence the pointer of Person class can be assigned an object of Employee class.
Person *ptr = new Employee;
This is used in virtual function calling also, but that's not our topic today.

If I want to down-cast the pointer (or reference), i.e want to cast the pointer of Person class to Pointer of Employee class, I need to explicitly cast it (even when the pointer to Person class holds the object of Employee class)

dynamic_cast, is used to perform safe casts down or across an inheritance hierarchy. That is, you use dynamic_cast to cast pointers or references to base class objects into pointers or references to derived or sibling base class objects in such a way that you can determine whether the casts succeeded or failed.
Employee * eptr = dynamic_cast<Employee*> (ptr)
Failed casts are indicated by a null pointer (when casting pointers) or an exception (when casting references).  

If you want to perform a cast which does not involve inheritance hierarchy, like casting away const-ness or casting double to int, then you cannot use dynamic_cast. There are other casts in C++ like static_cast, const_cast, reinterpret_cast for specialized purposes.

Please let me know your comments/feedback/suggestion.

---------------------------------------------------------------------------

Interview Questions Archive:

         To see all the questions in the category Click Here...


Post a Comment
*
DevExpress PowerBuilder Web Development Windows Development Languages Software Engineering Databases
iPhone Architecture Secutiry UML & Modeling Operating Systems Networking Testing
Graphics Design Project Management Hardware Open Source Games Development Business Intelligence Visual Studio LightSwitch 2011
MonoDevelop Visual Studio 2010 ASP.NET HTML, DHTML XML PHP JavaScript
Silverlight Web Services WCF Windows Forms WPF Windows Services Dynamic Link Libraries
ActiveX COM, DCOM, ATL C# VB.NET C++ F# Java
Pascal SQL Server Oracle DB2 MS-Access Windows Servers Windows
Linux Unix SAP LINQ .NET Framework ADO.NET Reporting
Crystal Reports SQL Server Reporting Services Igenda Reports Active Reports Adobe Fireworks Arrays & Collections Hosting
Future Trends Android Windows Phone Smart Devices Business M&A Investment & Funding
Web Browsers Internet Explorer Firefox Safari Common Entrepreneurs Students
Consulting Wiki Gadgets MobileMe iCloud iOS Social Media
Facebook Twitter LinkedIn Google+ Microsoft Kinect XBox
Wii Playstation DirectX i OS OS X CIO, CTO, CEO Windows 8
Web Design Expression Blend 4 Photoshop CS5 Creative Suite 5.5 Expression Web 4 Expression Studio 4 Creative Suite® 5.5 Design
Creative Suite 5.5 Web Creative Suite 5.5 Production Startups Funding M&A Laptops Smart Phones
Desktops Cameras & Camcorders Netbooks Tablets Virtualization Microsoft Surface WordPress
Software Products Cloud Computing Current Affairs Technology TV TV
Earnings XAML E-Commerce MonoTouch Mono for Android Deals Electronics
Mobile Phone Laptop Tablet Book Computer Press Releases Reviews
Products Books Companies Windows Azure SQL Azure Interviews Mac
Web Browsers Symbian Windows Forms WPF Windows Services HTML 5 Office 365
SharePoint 2010 Exchange Server Adobe Visual Studio 2012 iPad Flex / Flash Games
Windows 9
X
 Login
Please login to submit a new post, reply and edit exiting posts, see user profiles, and access more features. If you are not a registered member, Register here.
User Id / Email:
Password:  
Forgot Password | Forgot UserName