2015-12-07 3 views
-3

Вот простой пример, иллюстрирующий переопределение оператора в C++. Я не понимаю значения & в «CVector &» в строках 9 и 12. Не похоже, что они передают адрес CVector, кажется, что & можно опустить, так как оператор просто взятие в CVector в качестве параметра.В чем смысл & следовать идентификатору в C++?

#include <iostream> 
using namespace std; 

class CVector { 
    public: 
    int x,y; 
CVector() {}; 
CVector (int a,int b) : x(a), y(b) {} 
CVector operator + (const CVector&); 
}; 

CVector CVector::operator+ (const CVector& param) { 
CVector temp; 
temp.x = x + param.x; 
temp.y = y + param.y; 
return temp; 
} 

int main() 
{ 
    CVector foo (3,1); 
    CVector bar (1,2); 
    CVector result; 
    result = foo + bar; 
    cout << result.x << ',' << result.y << '\n'; 
    return 0; 
    } 
+0

Это пропуск по ссылке. Таким образом, это просто как передача адреса, за исключением того, что вам не нужно разыменовывать переменную, как указатель на ее использование. – spektr

+2

Если вы не знаете о ссылках на C++, вам может потребоваться резервное копирование от перегрузки оператора и более подробное изложение того, что вы изучаете. – crashmstr

ответ

1

Всякий раз, когда вы видите & в C++, если это параметр с параметром, это означает, что переменная, аргументированная методу, будет передаваться по ссылке и с отдельной переменной, она ссылается на адрес переменное хранилище.

2

Те ссылки. Это довольно фундаментальная концепция на C++, и я не думаю, что могу отдать им должное в этом коротком пространстве. Я бы посоветовал посоветоваться с учебным пособием на C++ или ссылкой, чтобы узнать больше о них, предпочтительно в контексте, который также не включает в себя другие сложные концепции, такие как классы.

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