Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/153.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和x2B的4行+;代码是什么? 第4行:双重&运算符[](int i); 这条线在C++编程原理中意味着什么,我在使用和[](int i)也很混淆的时候感到困惑。_C++ - Fatal编程技术网

什么是C和x2B的4行+;代码是什么? 第4行:双重&运算符[](int i); 这条线在C++编程原理中意味着什么,我在使用和[](int i)也很混淆的时候感到困惑。

什么是C和x2B的4行+;代码是什么? 第4行:双重&运算符[](int i); 这条线在C++编程原理中意味着什么,我在使用和[](int i)也很混淆的时候感到困惑。,c++,C++,它允许你在向量对象上使用[]参数。 它向您显示它接收一个int作为参数([i]),并返回一个double,因此下面这样的行是有效的: class vector{ public: vector(int s); double& operator[](int i); int size(); private: double∗ elem; int sz; }; 或 其中vector1是vector类的实例。它定义了运算符[],该运算符返回对向量中第n个元素

它允许你在向量对象上使用[]参数。 它向您显示它接收一个int作为参数(
[i]
),并返回一个double,因此下面这样的行是有效的:

class vector{
public:
    vector(int s);
    double& operator[](int i);
    int size();
private:
    double∗ elem;
    int sz;
};


其中vector1是
vector
类的实例。

它定义了运算符
[]
,该运算符返回对向量中第n个元素的双精度值的引用。
通过这种方式,您可以读取和写入特定元素。
假设您有以下内容:

vector1[2] = 4; // since the returned value is a reference
通过操作
double value=my_vector[3]
可以读取第四个元素的值。
通过操作
my_vector[6]=6.7
可以设置第7个元素的值

vector my_vector(1000);
这行在C中的意思是什么++

此行声明了一个
操作符[]
(也称为“数组下标操作符”)实现,它通常用于索引容器类型(例如
std::vector
std::map
和其他)。想象一下公共
序列[0]
访问对序列第一个元素的引用

何处使用&

<>在C++中,<代码>和<代码>字符附加到一个类型意味着“一个类型,表示对类型<代码> Foo的引用”。例如,
int&
是对
int
的引用,
double&
是对double的引用

现在,为什么要从
操作符[]
返回引用?答案是:因为你可能想写这样的代码

double& operator[](int i);
…为此,您需要
运算符[]
实现来返回左值。碰巧引用是左值!为什么你需要左值?一个过于简单的答案是“因为赋值的左边必须是左值”。我发现学习左值和右值很有帮助

和[](int i)也相当混乱

您对此的分析有点不正确。以这种方式看待声明:

  • double&
  • 操作员[]
  • (inti)
  • 第一部分是返回类型,第二部分是要实现的函数的名称,第三部分指定函数所采用的参数

    运算符[]
    的实现应将整数值(
    int
    无符号
    大小
    等)作为参数(免责声明:不确定,找不到“you-shall”引用)。这就是为什么参数列表是
    (int)


    进一步阅读:转到并查找“数组下标运算符”。

    关于特定语言的编程问题在这里不是主题,但在stackoveflow主题上。
    double& operator[](int i);
    
    sequence[0] = 42;