如果我定义自己的赋值操作符,它有不同的签名比正常生成默认赋值运算符:什么时候C++默认赋值运算符变得无法访问?
struct B;
struct A {
void operator = (const B& b) {
// assign something
}
};
确实默认赋值运算符,在这种情况下operator = (A&)
(或类似的,如果错了指正)变得未定义/无法访问?
AFAIK这是默认的构造函数,它不存在,如果我们定义一些其他的构造如此。 但我真的不确定这是否是其他“魔术”默认值的情况。
我之所以问:我想避免默认的拷贝构造函数通过隐式类型转换意外调用。如果它不存在,它永远不会发生。
感谢您的标准参考!这实际上比我的例子说的更多。 – xtofl 2009-08-19 13:08:47
你说得对。我会删除我的答案。 – 2009-08-19 13:09:29
@Neil,你想知道use = default可能是什么。一个是要明确可用的内容,另一个是要改变可访问性,第三个是允许实现不内联,同时确保类的进化不会打破它。另一个理由是,这个特征的范围比分配范围更广,即使它没有用,也没有动机去做例外。 – AProgrammer 2009-08-19 13:17:44