是==和!=编译器生成的运算符
Are == and != operators compiler-generated?
是否需要提供==和/或!=操作员?我在这里读到:为什么不;t C++编译器定义运算符==和运算符!=?我确实这样做了,但当我真正尝试时(没有提供它们,并试图使用它们(,程序编译得很好。那到底发生了什么?
如果重要,请使用VS2010。
这些运算符是为基本的、语言定义的类型定义的,而不是为自定义类型定义的。例如,它将适用于int
。但对于class foo;
不会,除非你明确地提供它们-如果你没有告诉编译器如何比较你自己定义的类型,编译器就不知道如何比较。
相关文章:
- 编译器如何在前缀和 postix 运算符之间进行区分?
- 编译器调用复制运算符而不是移动运算符
- 是否允许编译器省略对指针的 &* 运算符的组合调用?
- 编译"运算符删除"时C++编译器如何工作?
- 从 std::ostream 重载 << 运算符时,为什么编译器会给出"too many parameters for this operator function"错误?
- 如果类在 C++ 中具有常量或引用类型的非静态数据成员,为什么编译器不提供默认赋值运算符?
- 在析构函数中调用"delete"运算符时"compiler is out of heap space"编译器错误
- 编译器如何区分二进制运算符和模板C++令牌>>
- 为什么 c++ 编译器找不到运算符<<
- 为什么将"<<"运算符作为函数调用会导致"ambiguous call"编译器错误?
- [expr.unary.op]/9 似乎暗示"运算符!()' 不能应用于下面的类型 A.但编译器不同意这一点
- 运算符重载关联性编译器优化
- 编译器将输出的流运算符<<解释为用于按位左移的二进制运算符<<
- 为什么>>运算符在不同的编译器上显示不同的结果?
- C++编译器如何扩展前缀和后缀运算符++()?
- 为什么在取消引用的指向接口的指针上使用赋值运算符不是编译器错误
- 三元运算符:编译器不发出局部变量警告的返回引用
- 使用运算符 T* 构造对象的 Clang 编译器错误
- 我重载了一个运算符*()函数来计算两个矩阵的总和,但编译器提示此错误
- 运算符[]编译器错误和警告