C默认赋值运算符何时变得不可访问?

前端之家收集整理的这篇文章主要介绍了C默认赋值运算符何时变得不可访问?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如果我定义一个自己的赋值运算符,它的签名与通常生成的默认赋值运算符不同:
struct B;
struct A {
void operator = (const B& b) {
    // assign something
}
};

默认赋值运算符,在这种情况下,运算符=(A&)(或类似的,如果错误则纠正我)变为未定义/不可访问?

如果我们定义了一些其他构造函数,那么AFAIK对于默认构造函数是正确的,它不存在.
但我真的不确定其他“神奇”默认情况是否属于这种情况.

我问的原因是:我想避免通过隐式类型转换意外调用默认的复制构造函数.如果它不存在,它永远不会发生.

解决方法

No. 12.8 / 9表示X类的赋值运算符必须是非静态的非模板,其参数类型为X,X& X const& X volatile&或X const volatile&amp ;.并且有一个注释强调模板的实例化不会抑制隐式声明.
原文链接:https://www.f2er.com/c/117313.html

猜你在找的C&C++相关文章