Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 请解释以下功能_C++ - Fatal编程技术网

C++ 请解释以下功能

C++ 请解释以下功能,c++,C++,我遇到了一个函数定义,它的开头是: int operator*(vector &y) { // body } 在将*放在运算符后面并打开参数大括号之前,此函数的含义是什么 这是一个操作符*重载。您应该使用的语法是*(y),而y是vector类型 它允许您使用类似于引用的实现,类似于C中的指针引用。当然,实际含义取决于主体。e、 g.您可以返回对向量中内部元素的引用。这是*运算符的函数重载。它的函数重载使反引用运算符重载*实际上它不是*ptr中的延迟运算符!它实际上是一个运算符,比如

我遇到了一个函数定义,它的开头是:

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

在将
*
放在运算符后面并打开参数大括号之前,此函数的含义是什么

这是一个
操作符*
重载。您应该使用的语法是
*(y)
,而
y
vector
类型


它允许您使用类似于引用的实现,类似于C中的指针引用。当然,实际含义取决于主体。e、 g.您可以返回对向量中内部元素的引用。

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

它的函数重载使反引用运算符重载
*

实际上它不是*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
}
#包括
使用名称空间std;
结构整型{
int-val;
Int(const Int val=0):val(val){}
整型运算符*(常数整型和编号)常数{
返回val*number.val;
}
};
int main(){
Int n(4),m(5);

cout它要么是一个解引用运算符,要么是一个乘法运算符重写。如果它在命名空间中,它就是解引用的,如果它在类中,它就是乘法的。因为它有一个主体,没有类作用域,我也会假设它是一个解引用的。

大多数重载运算符可以定义为非成员函数,一元*不是exception。如果它是一个成员函数,是的,它是二进制*,但如图所示,一元*更可能。哦,等等,是的,你是对的,我没有意识到它是一个正则函数。