C++ Programming - OOPS Concepts - Discussion

Discussion Forum : OOPS Concepts - General Questions (Q.No. 3)
3.
Which of the following statements is correct?
Base class pointer cannot point to derived class.
Derived class pointer cannot point to base class.
Pointer to derived class cannot be created.
Pointer to base class cannot be created.
Answer: Option
Explanation:
No answer description is available. Let's discuss.
Discussion:
41 comments Page 1 of 5.

Aditya said:   4 years ago
The dynamic_cast can only be used with pointers and references to classes (or with void*). Its purpose is to ensure that the result of the type conversion points to a valid complete object of the destination pointer type.

This naturally includes pointer upcast (converting from pointer-to-derived to pointer-to-base), in the same way as allowed as an implicit conversion.

But dynamic_cast can also downcast (convert from pointer-to-base to pointer-to-derived) polymorphic classes (those with virtual members) if -and only if- the pointed object is a valid complete object of the target type.

For example:
// dynamic_cast
#include <iostream>
#include <exception>
using namespace std;

class Base { virtual void dummy() {} };
class Derived: public Base { int a; };

int main () {
try {
Base * pba = new Derived;
Base * pbb = new Base;
Derived * pd;

pd = dynamic_cast<Derived*>(pba);
if (pd==0) cout << "Null pointer on first type-cast.\n";

pd = dynamic_cast<Derived*>(pbb);
if (pd==0) cout << "Null pointer on second type-cast.\n";

} catch (exception& e) {cout << "Exception: " << e.what();}
return 0;
}

Output: Null pointer on second type-cast.

Atom said:   11 months ago
The base class pointer cannot point to the derived class: This is incorrect. A base class pointer can point to an object of the derived class, which is known as polymorphism (using a base class pointer to access derived class objects).

The derived class pointer cannot point to the base class: This is correct. A derived class pointer cannot point to an object of the base class without explicit typecasting, as the derived class may have additional members not present in the base class.

Pointer to derived class cannot be created: This is incorrect. Pointers to derived classes can be created just like pointers to any other type.

Pointer to base class cannot be created: This is incorrect. Pointers to base classes can be created and are commonly used, especially in polymorphism.
(2)

Sandep said:   1 decade ago
There points and all the doubts will be cleared.

1) in top-down approach will can't do up casting where as reverse is possible.

2) As derived class has inherited there is no need for pointing to the base class object.

3) In top-down approach the derived class does not no about the base class do pointing to the base class is not possible using the pointer of derived class.

Souradip said:   1 decade ago
The actual reason is - a derived class has all information about a base class and also some extra bit of information. Now a pointer to a derived class will require more space and that is not sufficient in base class. So the a pointer to a derived class cannot point to it. While on the other hand the reverse is true.

Thrineshneeraj said:   8 months ago
The base class pointer can point to base class objects and derived class objects.

To access the base part, which is in a derived class, the base class uses its pointer.

So vice versa is not there. i.e. there is no derived class part in the base class, so the derived class pointer cannot access the base class.
(5)

PREEYANKA said:   10 years ago
Base class pointer can point to base class object and derived class objects. To access base part, which is in derived class, base class uses its pointer. So vice versa is not their. i.e their is no derived class part in base class, so derived class pointer cannot access base class.
(4)

Nilam patel said:   1 decade ago
Derived classes are derived from their base class so base class has total knowledge of it's derived class n can able to point them but derived class has no ability to point to its base class. Because it's a top down approach.

Kavita said:   1 decade ago
I agree with srikant! there is no way a pointer should be able to point to an object of its parent class type because derived class not know anything about the new members that might have declared in parent class.

Yogesh said:   1 decade ago
I totally agree with Vinod. Derived class object can access members of base class[Depending upon type of inheritance], so need to do that, because C++ Developers have developed compiler in this way only.

Yash said:   9 years ago
Hierarchy is the base class to derived class.

Controls call base class first and then derived class.

So, there is no point a derived class would point a base class unless base class is "virtual".
(1)


Post your comments here:

Your comments will be displayed after verification.