Member 13010616 Ответов: 2

Пожалуйста, помогите мне понять использование & в этом примере. Я все искал и искал.


Я не могу найти ничего, что объясняло бы использование & в подобных ситуациях. Пожалуйста, скажите мне или свяжите меня с не запутанной и не очень длинной страницей. Спасибо.

SpreadsheetCell::SpreadsheetCell(const string& initialValue)
: mValue(stringToDouble(initialValue))
, mString(initialValue)
{
}

SpreadsheetCell::SpreadsheetCell(const SpreadsheetCell& src)

Что я уже пробовал:

Я пытался прочесать интернет в течение 2 дней.

Patrice T

Этот код не похож на C++

2 Ответов

Рейтинг:
12

Richard MacCutchan

Это ссылочный оператор C++, см. c reference operator - поиск в Google[^].


CPallini

5.

Richard MacCutchan

Спасибо. Вы должны задаться вопросом, где все эти люди ищут. Есть ли альтернативный Google, который отказывается находить вещи? :)

CPallini

C++ операторы сбивают с толку непрофессионала, потому что один и тот же символ может нести очень разные значения. Однако непрофессионалу "wannabe C++ developer" следует прочитать хотя бы хорошее введение в язык программирования C++.

Richard MacCutchan

Беда в том, что современный "подражатель-разработчик", похоже, учится на вопросах copy 'n' paste и CodeProject. Так что многие, похоже, не имеют представления об основах, но все еще работают в качестве разработчиков.

[no name]

Что меня смущает , так это то, когда & придет на место символа,. EXP: Spreadsheet &Spreadsheet::operator+=(const Spreadsheet&RHS) пожалуйста, помогите мне понять, что происходит в этих двух ситуациях.

Richard MacCutchan

Смотрите мой ответ ниже.

Рейтинг:
11

Richard MacCutchan

Spreadsheet & Spreadsheet::operator+=(const Spreadsheet& rhs)

Ладно, давайте попробуем немного разбить это дело.
- Spreadsheet & : это говорит нам о том, что результатом работы этого оператора является ссылка на электронную таблицу (см. ниже).
- Spreadsheet::operator+= : это (повторное)определение += оператор.
- (const Spreadsheet& rhs) правый параметр этого оператора является ссылкой (&) на постоянную электронную таблицу (const). Здесь & сообщает компилятору, что это ссылка на объект. В простых терминах ссылка похожа на указатель, но имеет некоторые дополнительные применения.

Таким образом, в общей сложности этот оператор берет ссылку на электронную таблицу, что-то делает с ней и возвращает новую ссылку, и будет вызван чем-то вроде:
Spreadsheet spreadSheet1 = new Spreadsheet();
// add some data to spreadsheet1

Spreadsheet spreadSheet2 = new Spreadsheet();
// add some data to spreadsheet2

spreadsheet1 += spreadsheet2;
// this will execute the code defined by the overloaded operator described above. The actual
// additions will depend on the programmer who writes the code. But after the operation
// spreadsheet1 will (most likely) contain additional information that comes from spreadsheet2.


CPallini

Молодец, мой 5-й.
Карло придурок обязательно позвонил бы rhs ссылка на const SpreadSheet- Наверное.

Richard MacCutchan

И Карло, конечно, будет прав. Это не придирки, так как эти два совершенно разных животных; Спасибо, что указали на это.