0
From the code given below, the output should be 12(because constructor never inherit ) but it is 112 . How? Someone can explain.
#include <iostream> using namespace std; class a {public: int x; a() {x=1; cout<<x; } }; class b:public a {public: int y; b() {y=2; cout<<y; } }; int main() { a ob1; b ob2; return 0; } //output //112
5 ответов
+ 3
Because the base class' constructor is called by the child when it's created.
+ 3
Inheritance has to do with the fact that methods can be used by the derived classes. Not that they are called automatically...constructors that have no parameters are called automatically when an object is created.
+ 2
Constructor can't inherit in the meaning that when you create custom constructor, it don't override it's parent's constructor ( in the base class )...
So, it's why the constructor of a in your code is called 2 times : one first for the creation of the ob1 instance, and a second one, just before the creation of ob2's instance and it's call to b's constructor.
+ 1
During the first instantiation --> a ob1;
base class is called
a() --> output = 1
During the second instantiation --> b ob2;
child class inherits the property of base class .
so b() calls the parent class constructor a() before it (child class constructor b() ) gets executed.
b() --> output 12
Overall Output -> 112
0
that i know but how because constructor can't inherit