Как я могу перегрузить = оператор для копирования по ссылке в C ++? - PullRequest
0 голосов
/ 28 декабря 2011

Я знаю, что это может быть бессмысленным вопросом, но я просто удивляюсь, что можно использовать оператор = для копирования по ссылке таким образом

int a, b=5;
a = b;
a = 4;
cout<<b<<endl;

Другими словами, я пытаюсь создать этот кодвыведите 4 вместо 5. Спасибо за любые комментарии ...

Ответы [ 3 ]

5 голосов
/ 28 декабря 2011

Вы не можете сделать это, потому что вы уже объявили a как int.

Либо сделайте a ссылкой (int&) или указателем (int*) наb.

4 голосов
/ 28 декабря 2011

Это может быть возможно для пользовательских классов, использующих некоторые неясные приемы, но в целом это не разрешено. Одно из самых важных правил перегрузки операторов: никогда не меняйте значение операторов. Например. не меняйте значения + и -. Конечно, это может быть сделано, но это может смутить других и, возможно, вас самих, читая код чуть позже.

То, что вы пытаетесь сделать, может быть сделано в C ++ с использованием указателей или ссылок:

int b = 5;
int &a = b;
a = 4;
cout << b << endl; // prints 4
1 голос
/ 28 декабря 2011

Нет, вы не можете это сделать.Чтобы перегрузить назначение без использования пользовательского класса. См. http://www.parashift.com/c++-faq-lite/intrinsic-types.html#faq-26.10

...