请解释以下功能

时间:2011-07-24 16:38:35

标签: c++

我遇到了一个函数定义,从:

开始
int operator*(vector &y)
{
  // body
}

在操作符之后放置*并在打开参数括号之前,这个函数意味着什么?

5 个答案:

答案 0 :(得分:7)

这是operator *重载。您应使用的语法为*(y),而y的类型为vector

它允许你像实现一样引用,类似于C中的指针引用。当然,实际意义取决于正文。例如您可以返回对向量中内部元素的引用。

答案 1 :(得分:1)

这是*运算符的函数重载。

答案 2 :(得分:0)

它的函数重载会使去引用运算符*重载。

答案 3 :(得分:0)

它是解引用运算符或乘法运算符覆盖。如果它在一个名称空间中,则取消引用它,如果它在一个类中则是乘法。由于它有一个主体而没有类范围,我还假设它是一个解引用。

答案 4 :(得分:-2)

实际上它不是* ptr中的引用运算符!它实际上是一个运算符,如乘法运算符。这是一个简单的例子

#include <iostream>
using namespace std;

struct Int{
 int val;
 Int(const int val = 0) : val(val){}
 int operator*(const Int& number)const{
    return val * number.val;
 }
};

int main(){
  Int n(4), m(5);
  cout << n * m << endl; //use the operator*() implicitly
  cout << (n.operator*(m)) << endl; //use the operator* explicitly
}

要定义一个去除运算符,它的原型将是operator *()。查看here以获取更多信息。 Here是要测试的实时代码。