infoarena

infoarena - concursuri, probleme, evaluator, articole => Informatica => Subiect creat de: dragu stelian din Iulie 16, 2016, 19:23:05



Titlul: Mostenire clase
Scris de: dragu stelian din Iulie 16, 2016, 19:23:05
De ce nu imi este afisat x.
Nu inteleg, x-ul este returnat de functia getX(), si apoi este apelata functia in clasa derivata SecondClass
printr-un obiect de tipul FirstClass si tot nu imi este afisat x-ul.


Cod:
#include <iostream>
using namespace std;

class FirstClass
{
private:
    int x;
public:
    FirstClass()
    {
        cout << "\n Apel constructor implicit FirstClass()." << endl;
    }
    FirstClass(int x)
    {
        cout << "\n Apel constructor cu parametri FirstClass()." << endl;
        this->x = x;
        cout << "\n X = " << x << endl;
    }
    int getX()
    {
        return x;
    }
};

class SecondClass:protected FirstClass
{
private:
    int y;
public:
    SecondClass(int x):FirstClass(x)
    {
        cout << "\n Apel constructor cu parametri SecondClass()." << endl;
    }
    void printX(FirstClass& obj)
    {
        cout << "\n X = " << obj.getX() << endl;
    }
};

int main()
{
    FirstClass box1;
    SecondClass box2(100);
    box2.printX(box1);
    return 0;
}