operator +
时间: 2023-08-06 20:04:53 浏览: 99
operator是C++中的一个关键字,用于重载运算符。在C++中,可以通过重载运算符来定义自定义类型的运算行为。重载运算符的声明方式与普通的成员函数一样,只不过函数名是"operator"后跟一个C++预定义的操作符。[2]重载运算符的目的是使重载后的运算符的使用方法与重载前一致,并且扩展运算符的功能只能通过函数的方式实现。[3]在给定的代码示例中,operator后跟的是"()"和"--",分别表示函数调用运算符和递减运算符的重载。[1]
相关问题
point&operator ++和point operator ++(int)
这两个函数都是重载了运算符 "++" 的类成员函数,不同的是它们的参数不同,前者是一个引用类型的左值,后者是一个 int 类型的右值。
point& operator ++ 表示前置自增运算符,它的返回值为 point 类型的引用,用于支持链式调用。该函数将对象本身加1后返回自身的引用,比如 ++p。
point operator ++(int) 表示后置自增运算符,它的参数 int 实际上是一个占位符,用于区分前置自增运算符。该函数返回一个 point 类型的临时对象,表示在原对象值的基础上加1,比如 p++。注意,由于返回的是临时对象,因此它不能被修改,否则会出现未定义的行为。
如果表达式++i*k中的“++”和“*”都是重载的友元运算符,则采用运算符函数调用格式,该表达式还可表示为()。 A. operator*(i.operator++(),k) B. operator*(operator++(i),k) C. i.operator++().operator*(k) D. k.operator*(operator++(i))
根据 C++ 运算符的优先级和结合律,表达式 `++i*k` 的计算顺序应该是先执行 `++i`,然后再执行 `*k`,也就是相当于 `(++i) * k`。因此,正确的表达式应该是:
C. `i.operator++().operator*(k)`
这里使用了对象成员访问运算符 `.`,因此 `++i` 被视为 `i` 对象的一个成员函数 `operator++()` 的调用,返回一个新的 `i` 对象,然后再调用该对象的成员函数 `operator*`,将其与 `k` 相乘。另外,根据运算符重载的特性,这两个运算符必须是成员函数,不能是友元函数。
阅读全文