我遇到了一个函数定义,从:
开始int operator*(vector &y)
{
// body
}
在操作符之后放置*
并在打开参数括号之前,这个函数意味着什么?
答案 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
}