gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:06:53 25 4
gpt4 key购买 nike

如果我定义一个自己的赋值运算符,它与通常生成的默认赋值运算符具有不同的签名:

struct B;
struct A {
void operator = (const B& b) {
// assign something
}
};

默认赋值运算符,在本例中为 operator = (A&)(或类似的,如果错误请纠正)是否变为未定义/不可访问?

据我所知,如果我们定义其他构造函数,默认构造函数是不存在的。但我真的不确定其他“神奇”默认值是否属于这种情况。

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

最佳答案

没有。 12.8/9 规定类 X 的赋值运算符必须是非静态的、非模板的,其参数类型为 X、X&、X const&、X volatile& 或 X const volatile&。并且有一条注释强调模板的实例化不会抑制隐式声明。

关于c++ - C++ 默认赋值运算符何时变得不可访问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1299691/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com