如果表达式++i*k中的“++”和“*”都是重载的友元运算符,则采用运算符函数调用格式,该表达式还可表示为()。 A. operator*(i.operator++(),k) B. operator*(operator++(i),k) C. i.operator++().operator*(k) D. k.operator*(operator++(i))
时间: 2023-12-17 19:03:23 浏览: 66
根据 C++ 运算符的优先级和结合律,表达式 `++i*k` 的计算顺序应该是先执行 `++i`,然后再执行 `*k`,也就是相当于 `(++i) * k`。因此,正确的表达式应该是:
C. `i.operator++().operator*(k)`
这里使用了对象成员访问运算符 `.`,因此 `++i` 被视为 `i` 对象的一个成员函数 `operator++()` 的调用,返回一个新的 `i` 对象,然后再调用该对象的成员函数 `operator*`,将其与 `k` 相乘。另外,根据运算符重载的特性,这两个运算符必须是成员函数,不能是友元函数。
阅读全文