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

前端之家收集整理的这篇文章主要介绍了c – 当存在const成员时,为什么= default = operator = compile?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
class Foo {
public:
  Foo& operator=(const Foo&) = default;
private:
  const int i = 0;
};

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

究竟发生了什么?

解决方法

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

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