0

以下是我的 C++ 文本的摘录,说明了使用复制构造函数声明类的语法。

class Student {
     int no;
     char* grade;
 public:
     Student();
     Student(int, const char*);
     Student(const Student&);
     ~Student();
     void display() const; 
 };

复制构造函数,如下所示:

Student(const Student&);

在参数 Student有一个 & 符号。

我相信在 C 和 C++ 中,与号字符用作指针的“地址”运算符。当然,在指针名称之前使用 & 字符是标准的,复制构造函数在之后使用它,所以我假设这不是同一个运算符。

我发现的 & 字符的另一种用法涉及右值和左值,如下所示:http://www.cprogramming.com/c++11/rvalue-references-and-move-semantics-in-c++11。 html

我的问题不是关于 Rvalues 和 Lvalues,我只是想知道为什么& 字符放在参数之后,这叫什么以及是否/为什么需要。

4

1 回答 1

1

C++ 具有 C 中不存在的引用类型。&用于定义这种类型。

int i = 10;
int& iref = i;

这里iref是一个参考i

对 的任何更改i都可以通过 看到iref,对 的任何更改iref都可以通过 看到i

iref = 10; // Same as i = 10;
i = 20;    // Same as iref = 20;

引用可以是左值引用或右值引用。在上面的例子中,iref是一个左值引用。

int&& rref = 10;

rref是一个右值参考。

您可以在http://en.cppreference.com/w/cpp/language/reference阅读有关右值引用的更多信息 。

于 2015-10-22T21:12:45.403 回答