微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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.jb51.cc/c/117313.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐