在经历Bruce Eckel TIC ++时被困在这里
创建一个具有赋值运算符的类 第二个参数,一个具有默认值的字符串 说“op = call。”创建一个分配对象的函数 你的班级到另一个班,并表明你的 正确调用赋值运算符。
这真的有可能吗? C ++是否允许 operator =()具有多个参数?我试过这个:
class X
{
public:
X& operator=(const X& x, string val = "op=call") //! error
{
// ...
}
};
int main()
{
X x1;
X x2;
x2 = x1;
}
编译器给出的错误:
[Error] 'X& X::operator=(const X&, std::string)' must take exactly one argument
我认为这不是一个有效的问题,或者它是如何为赋值运算符提供多个参数?
答案 0 :(得分:1)
Thinking in C ++,Vol 1 的最新版本于2001年出版。自那时起(2003年,2011年和2014年),新版C ++标准已发布三次。
我的猜测是,Eckel在标准中显示出一个漏洞,后来被纠正了。 (或者可能,因为我预先假定的这个漏洞会是一个边缘情况,你的编译器可能只是意外地实现了预期的行为,而不是严格遵循标准)