2013-04-22 3 views
-4

Ниже приведен пример кода для перегрузки оператора. , что делает «&» означает в синтаксисеЧто означает «&» при перегрузке оператора

complx operator+(const complx&) const; ? 

#include <iostream> 
using namespace std; 
class complx 
{ 
     double real, 
      imag; 
public: 
     complx(double real = 0., double imag = 0.); // constructor 
     complx operator+(const complx&) const;  // operator+() 
}; 

// define constructor 
complx::complx(double r, double i) 
{ 
     real = r; imag = i; 
} 

// define overloaded + (plus) operator 
complx complx::operator+ (const complx& c) const 
{ 
     complx result; 
     result.real = (this->real + c.real); 
     result.imag = (this->imag + c.imag); 
     return result; 

} 

int main() 
{ 
     complx x(4,4); 
     complx y(6,6); 
     complx z = x + y; // calls complx::operator+() 
} 
+5

Это ссылка. Любой [достойный вводный C++ book] (http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list) должен охватывать это. –

+1

Википедия также имеет приличную информацию для новичков: [операторы wiki] (http://en.wikipedia.org/wiki/Operators_in_C_and_C%2B%2B#Member_and_pointer_operators) – Dariusz

ответ

0

Это pass by reference, и это не, относящийся к operator overloading. Это один из способов передать аргументы функции [1.Pass by Copy, 2.Pass по адресу, 3.Pass by Reference]. С помощью C вы используете pointers, если хотите изменить свое исходное значение аргумента при его изменении внутри функции. Но Cpp также предоставляет pass by reference, имя, добавленное с помощью &, действует как альтернативное имя переданного аргумента. [А также избавляет вас от всего, что разыменования и вещи, связанные с указателями]

2
(const complx&) 
  1. Вы передаете значение по ссылке.

  2. Ссылка - это просто псевдоним оригинального объекта.

  3. Здесь можно избежать дополнительной операции копирования. Если вы использовали 'pass by value' like: (const complex), то для формальных параметров вызывается конструктор копирования .

Надеюсь, это поможет в некоторой степени.

Смежные вопросы