Ниже приводится выдержка из моего текста на C ++, иллюстрирующая синтаксис объявления класса с помощью конструктора копирования.
class Student {
int no;
char* grade;
public:
Student();
Student(int, const char*);
Student(const Student&);
~Student();
void display() const;
};
Конструктор копирования, как показано здесь:
Student(const Student&);
Имеет амперсанд после Параметр Студент.
В C и C ++, как я полагаю, символ амперсанда используется в качестве оператора адреса для указателей. Конечно, стандартно использовать & персонаж до имя указателя, и конструктор копирования использует его после, так что я предполагаю, что это не тот же оператор.
Другое использование символа амперсанда, которое я нашел, относится к Rvalues и Lvalues, как показано здесь: http://www.cprogramming.com/c++11/rvalue-references-and-move-semantics-in-c++11.html
Мой вопрос не о Rvalues и Lvalues, я просто хочу знать Зачем & персонаж размещен после Параметр, и как это называется, и если / почему это необходимо.
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;
Ссылка может быть ссылкой lvalue или ссылкой rvalue. В приведенном выше примере iref
является ссылкой на lvalue.
int&& rref = 10;
Вот rref
это ссылка на значение.
Вы можете прочитать больше о ссылках rvalue на http://en.cppreference.com/w/cpp/language/reference.
Других решений пока нет …