Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 当存在常量成员时,为什么运算符=编译上的=默认值?_C++_C++11 - Fatal编程技术网

C++ 当存在常量成员时,为什么运算符=编译上的=默认值?

C++ 当存在常量成员时,为什么运算符=编译上的=默认值?,c++,c++11,C++,C++11,为什么这里允许=default?它编译时没有错误。我认为=default应该失败,因为它不可能分配到const变量中 实际发生的情况是什么?当函数无法生成时(按实际情况),=default将以=deleted的形式生成它。如果您尝试使用该赋值运算符,则编译器应该 class Foo { public: Foo& operator=(const Foo&) = default; private: const int i = 0; };

为什么这里允许
=default
?它编译时没有错误。我认为
=default
应该失败,因为它不可能分配到
const
变量中


实际发生的情况是什么?

当函数无法生成时(按实际情况),
=default
将以
=delete
d的形式生成它。如果您尝试使用该赋值运算符,则编译器应该

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