LINUX.ORG.RU

История изменений

Исправление soomrack, (текущая версия) :

А еще можно написать так, это понятней с т.з. того, что делает код, если нужно только скопировать данные из родителя (но все равно, это очень плохой стиль):

#include <iostream>


class Parent {
public:
    int id;
public:
    Parent() { id = 1; };
    Parent(int number) { id = number; };
    Parent& operator=(Parent &source) { id = source.id; return *this; };
};


class Child : public Parent {
public:
    Child() {};
//    Child& operator=(Parent &source) { Parent::operator=(source); return *this; };
};



int main() {
    Parent P(10);
    std::cout << "Parent.id = " << P.id << std::endl;

    Child C;
    std::cout << "Child.id = " << C.id << std::endl;

    *((Parent *)&C) = P;
    std::cout << "Child.id = " << C.id << std::endl;
}

Исходная версия soomrack, :

А еще можно написать так, это понятней с т.з. того, что делает код, если нужно только скопировать данные из родителя:

#include <iostream>


class Parent {
public:
    int id;
public:
    Parent() { id = 1; };
    Parent(int number) { id = number; };
    Parent& operator=(Parent &source) { id = source.id; return *this; };
};


class Child : public Parent {
public:
    Child() {};
//    Child& operator=(Parent &source) { Parent::operator=(source); return *this; };
};



int main() {
    Parent P(10);
    std::cout << "Parent.id = " << P.id << std::endl;

    Child C;
    std::cout << "Child.id = " << C.id << std::endl;

    *((Parent *)&C) = P;
    std::cout << "Child.id = " << C.id << std::endl;
}