gpt4 book ai didi

c++ - 是否有任何 C++ 运算符重载是基于其他运算符自动提供的?

转载 作者:太空狗 更新时间:2023-10-29 20:23:32 25 4
gpt4 key购买 nike

假设我正在写一个 int包装器并需要提供每个单独的运算符重载。作者必须列出每一个,还是可以根据作者提供的内容自动生成任何一个?编译器能否/是否从现有运算符中推断出任何新的自动定义运算符?

如果我定义 operator== ,它会给我一个 operator!= 吗?自动地?还是相反?

如果我定义 operator++() , 我得到 operator++(int)免费?还是相反?

+=怎么样?类型业务?它可以结合 operator+ 的现有定义吗?与 operator=生成 operator+= ?理论上应该可行,但真的可行吗?

>= 的相同问题至 <等,还是我必须完整列出 > 的定义? , > , >= , <=

最佳答案

在核心语言中,各种运算符是独立的。有些是根据其他运算符定义的,但是如果运算符调用的重载解析失败,则不会尝试根据其他运算符来表达该调用。当需要时,程序员可以很容易地表达出来(相反,关闭这种机器可能会更困难)。

std::rel_ops 中有一组关系运算符重载客户端代码可以使用,根据 < 定义和 == .

您可以轻松编写一个混合类,它根据 < 提供关系运算符和 == ,或者就三值而言 compare功能。这是 Curiously Recurring Template Pattern 的最初动机,称为 Barton-Nackman trick .

关于c++ - 是否有任何 C++ 运算符重载是基于其他运算符自动提供的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32816843/

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