C语言如何定义新的运算符号?

来源:百度知道 编辑:UC知道 时间:2024/06/05 19:32:22
比如我要定义
a`b=(a+b)*(a-b)

怎么写?

貌似不可能实现,#define,类重载运算符都不行

testclass testclass::operator=(testclass b)
{
testclass temp(0);
temp.xx=(this->xx+b.xx)*(this->xx-b.xx);
return temp;
}//这是类重载运算符用法,注意只能重装原有运算符

#define DEF(x,y) (x-y)*(x+y)
//这是#define用法,注意形式类似函数

1、C语言不能定义运算符号,只有两个办法实现类似的功能:一个是自定义函数,另外一个自定义宏。
2、C++支持运算符重载,所以在C++中可以自定义新的运算符号。
运算符重载定义:
C++中预定义的运算符的操作对象只能是基本数据类型。但实际上,对于许多用户自定义类型(例如类),也需要类似的运算操作。这时就必须在C++中重新定义这些运算符,赋予已有运算符新的功能,使它能够用于特定类型执行特定的操作。运算符重载的实质是函数重载,它提供了C++的可扩展性,也是C++最吸引人的特性之一。
运算符重载是通过创建运算符函数实现的,运算符函数定义了重载的运算符将要进行的操作。运算符函数的定义与其他函数的定义类似,惟一的区别是运算符函数的函数名是由关键字operator和其后要重载的运算符符号构成的。运算符函数定义的一般格式如下:
<返回类型说明符> operator <运算符符号>(<参数表>)
{
<函数体>
}
运算符重载时要遵循以下规则:
(1) 除了类属关系运算符"."、成员指针运算符".*"、作用域运算符"::"、sizeof运算符和三目运算符"?:"以外,C++中的所有运算符都可以重载。
(2) 重载运算符限制在C++语言中已有的运算符范围内的允许重载的运算符之中,不能创建新的运算符。
(3) 运算符重载实质上是函数重载,因此编译程