Что унаследовано от базового класса? - PullRequest
0 голосов
/ 15 ноября 2011

Взят отсюда: http://www.cplusplus.com/doc/tutorial/inheritance/

Что унаследовано от базового класса?В принципе, производный класс наследует каждого члена базового класса, кроме:

its constructor and its destructor
its operator=() members
its friends

Мой вопрос: что такое члены operator = ()?

Ответы [ 4 ]

2 голосов
/ 15 ноября 2011

operator=() - оператор присваивания. Наличие множественного числа на «членах» означает все перегрузки операторов присваивания (например, +=, *= и т. Д.).

1 голос
/ 15 ноября 2011

Это может быть оператор присваивания Object& operator=(const Object& rhs) и оператор пересылки Object& operator=(Object& rhs), как видно со смарт-указателями и т. Д.

0 голосов
/ 15 ноября 2011

operator=() - это оператор присваивания классов, и он определяется, если вы хотите иметь возможность легко присваивать значения из одного объекта вашего класса другому, без необходимости утомительно каждый раз проходить через porcess. Процесс называется overloading, и в Википедии есть отличная статья , охватывающая эту тему, как и документация C ++ .

0 голосов
/ 15 ноября 2011

Вы можете определить любой вид оператора = ().Даже очень бесполезные.Но ни один из них не будет унаследован от дочернего класса.Со своего сайта ссылок я немного изменил пример, чтобы сделать его более понятным.Этот пример не скомпилируется из-за упомянутых ошибок.

class mother {
public:
    mother ()
    { cout << "mother: no parameters\n"; }
    explicit mother (int a):m_int(a)
    { cout << "mother: int parameter\n"; }

    mother& operator=(mother const& rhs)
    {
        if(&rhs != this)
        {
            m_int = rhs.m_int;
        }
        return *this;
    }

    mother& operator=(int i)
    {
        m_int = i;
        return *this;
    }
private:
    int m_int;
};

class son : public mother {
public:
    explicit  son (int a) : mother (a)
    { cout << "son: int parameter\n\n"; }
};
int main()
{
    mother mom(2);
    son daniel(0);
    mom = 3;
    daniel = 4; // compile error
    daniel = mom; // also error
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...