什么是从基类继承的?

时间:2011-11-15 09:33:21

标签: c++ inheritance

从这里采取:http://www.cplusplus.com/doc/tutorial/inheritance/

什么是从基类继承的? 原则上,派生类继承基类的每个成员,除了:

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

我的问题是,什么是operator =()成员?

4 个答案:

答案 0 :(得分:2)

operator=()是赋值运算符。通过在“成员”上使用复数,它意味着所有赋值运算符重载(例如+=*=等。)

答案 1 :(得分:1)

它可以是赋值运算符Object& operator=(const Object& rhs)和传输运算符Object& operator=(Object& rhs),如智能指针等所示。

答案 2 :(得分:0)

您可以定义任何类型的operator =()。即使是非常无用的。但是非他们将被继承到子类。从您的链接网站我稍微改变了一些示例,使其更加清晰。由于提到的错误,这个例子不会编译。

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
}

答案 3 :(得分:0)

operator=()是类赋值运算符,如果您希望能够轻松地将类的一个对象的值分配给另一个对象而不必每次都繁琐地逐步完成访问,则会定义它。该过程称为overloading,维基百科有great article涵盖主题,C++ documentation也是如此。