+ 23
Is it possible to assign a base class object to a derived class object?
8 Answers
+ 18
Kremik congrats on 500 challenge victories amazing
+ 17
So, which answer true or false should be correct for the following question in quiz: It is possible to assign a base class object to a derived class object.
+ 9
Do you mean like this?:
class A{...};
class B : public A{...};
A ao;
B bo = ao;
This is not possible by default in C++ (because A "is not a" B) but you can do the inverse (because B "is a" A), like this:
B bo;
A ao = bo;
In this case B is "sliced" and only the A part of B is copied to A.
But of course you can "cheat" and overload B's assignment operator to achieve this! For example:
class A
{
protected:
int a;
public:
A(int x){a=x;}
int getA() const{return a;}
};
class B : public A
{
int b;
public:
B(int x, int y) : A(x) {b=y;}
void operator=(const A& ar) {a=ar.getA();}
};
int main() {
A ao(4);
B bo(2, 3);
bo = ao; //bo is now 4, 3
return 0;
}
+ 5
If you have to answer yes/no the answer would be No.
+ 4
yes ypu can, but you have to use explicit conversion like:
B bo;
A ao;
bo=(bo)ao;
which is unsafe really often, because ao could have no members which are in B class
+ 3
accept my challenge
+ 1
No.we can't use base class object for derived class.
+ 1
Yes , but only we assign base class pointer to derived class obj