C ++拷贝构造函数语法:&符号是否引用r / l值?

时间:2015-10-22 21:09:30

标签: c++ copy-constructor lvalue ampersand addressof

以下是我的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 ++中,&符号被用作'的地址。指针运算符。当然,使用&标准是标准的。 之前指针名称,并且复制构造函数在之后使用它,所以我假设这不是同一个运算符。

我找到的&符号字符的另一种用途,与Rvalues和Lvalues相关,如下所示:http://www.cprogramming.com/c++11/rvalue-references-and-move-semantics-in-c++11.html

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

1 个答案:

答案 0 :(得分: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了解有关右值参考的更多信息。