如果我有以下类:
这个问题假设TestA类和TestB类在变量方面完全相同:赋值运算符(或任何其他运算符)是否被继承?
以下写法是否正确?
如果它是有效的,它会有所不同吗?
class TestA
{
public:
const TestA &operator=(const int A){return *this;}
};
class TestB : public TestA
{
public:
//Inheritance?
};
这个问题假设TestA类和TestB类在变量方面完全相同:赋值运算符(或任何其他运算符)是否被继承?
以下写法是否正确?
class TestB : public TestA
{
public:
using TestA::operator=;
//Inheritance?
};
如果它是有效的,它会有所不同吗?
operator=
应当返回一个非const
引用this
。 - king_nakvoid
(但是如果你想像a = b = c
那样链接赋值操作,它应该返回非 const 引用)。 - Alexander Poluektovconst
引用。使用const
引用可以进行链式操作,但不支持语句(a = b) = c;
,这在 POD 上是有效的。但这只是一个非常特殊的情况... - king_nakint
而是const ref参数。 - Alexander Poluektovtime()
返回的 long 一样进行赋值。但一般来说,黄金法则是不要惊讶你的类用户并做出意外的事情。 - king_nak