+ 5
Operator= in class objects. (C++)
What happens when we assign an object of the inherited class to a base class object? class A{}; class B: public A{}; A a; B b; a=b;
3 Answers
+ 2
You may find your answer here :
https://stackoverflow.com/questions/45857883/why-cant-a-base-class-object-assigned-to-a-derived-class-object
+ 4
When you use the default assignment operator provided to assign a base class object with a derived class object, all the data present in the inherited members of the derived class is copied to the base class.
Eg - :
#include<iostream>
using namespace std;
class A
{
public:
int a;
A(int v):a(v){}
};
class B : public A
{
public:
int b;
B(int v):b(v),A(v){}
};
int main()
{
A o1(2);
B o2(4);
o1 = o2;
cout<<o1.a<<endl;
}
Note that o1 = o2 is possible, but o2 = o1 is not.
You need to define a new assignment operator in the derived class to use the object of the base class and copy just the useful data.
+ 4
I know that it will work like this, but I can not understand why to equate an object in which only the variable a to the object in which both a and b is possible, and vice versa is impossible.