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

c – 当存在const成员时,为什么= default = operator = compile?

class Foo {
public:
  Foo& operator=(const Foo&) = default;
private:
  const int i = 0;
};

为什么在那里允许=认?它编译没有错误.我认为= default应该失败,因为它不可能分配给const变量?

究竟发生了什么?

解决方法

当无法生成函数时(如果是这种情况),= default会将其生成为=删除.如果您尝试使用该赋值运算符,则编译器应为 produce an error.

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

相关推荐