【发布时间】:2009-08-19 12:44:15
【问题描述】:
如果我定义了一个自己的赋值运算符,它的签名与通常生成的默认赋值运算符不同:
struct B;
struct A {
void operator = (const B& b) {
// assign something
}
};
默认赋值运算符,在这种情况下operator = (A&)(或类似的,如果错误,请纠正我)变得未定义/无法访问?
AFAIK 这对于默认构造函数是正确的,如果我们定义其他构造函数,则默认构造函数不存在。 但我真的不确定其他“魔法”默认值是否属于这种情况。
我问的原因:我想避免通过隐式类型转换意外调用默认的复制构造函数。如果它不存在,就永远不会发生。
【问题讨论】:
标签: c++