在c ++中覆盖=〜运算符

时间:2015-09-23 06:46:20

标签: c++ c++11

我想在c ++中覆盖=〜运算符 有没有办法做到这一点。

当我尝试操作符=〜(..)

编译器给出错误

错误:在'〜'之前的预期初始化程序令牌

注意: 我需要解析表达式:

{abc == 123&& pqr = ~cb}

=〜运算符意味着模式匹配。

3 个答案:

答案 0 :(得分:3)

C ++没有运算符=~。只有现有的运营商才能超载;你不能在Haskell或其他语言中创建自己的。所以你要求实现的目标是不可能的。

答案 1 :(得分:1)

没有像=〜运算符这样的东西。 并且没有像= x(x - 任何其他运算符)这样的东西。

你无法在c ++中定义新的运算符。

在你的情况下使用operator~然后使用赋值。

答案 2 :(得分:0)

您需要使用已存在的运算符。 [1]无法引入现有符号的新组合,并且您不能使用一元(单个参数)的运算符,例如operator~

假设输入类似字符串,我会说operator%operator^可能会起作用。所以你得到if (abc == 123 && pqr % cb) ...

然后可以通过以下方式实现:

bool operator%(std::string a, std::string b)
{
   return isMatch(a, b);
}

[1]除了修改编译器源代码之外,由于这种类型的更改永远不会进入主流编译器,因此您必须永久地在编译器的分支上维护这样的更改。当然,这假设您甚至可以使用编译器源代码,而所有编译器都不是这样。