powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / переопределенный оператор - возвращение типа по ссылке и по значению
7 сообщений из 32, страница 2 из 2
переопределенный оператор - возвращение типа по ссылке и по значению
    #38110027
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovMaximuS_GА странно тогда, почему в main() прокатывают оба оператора:
Код: plaintext
1.
2.
3.
int t = 3;
t =+ 2;
t += 2;

Потому, что синтаксис надо учить.
Во второй строке переменной t, имевшей значение 3, переприсваивается значение 2. С явным указанием необязательного знака плюс.
В третьей строке выполняется оператор с присваиванием и в результате получается 4.

Всё же скорее это применение операции "унарный плюс" к константе "2".
...
Рейтинг: 0 / 0
переопределенный оператор - возвращение типа по ссылке и по значению
    #38110727
MaximuS_G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovMaximuS_GА странно тогда, почему в main() прокатывают оба оператора:
Код: plaintext
1.
2.
3.
int t = 3;
t =+ 2;
t += 2;

Потому, что синтаксис надо учить.
Во второй строке переменной t, имевшей значение 3, переприсваивается значение 2. С явным указанием необязательного знака плюс.
В третьей строке выполняется оператор с присваиванием и в результате получается 4.
Ага, ясно, спасибо большое! Вот так и учим синтаксис)
...
Рейтинг: 0 / 0
переопределенный оператор - возвращение типа по ссылке и по значению
    #38110736
MaximuS_G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivBasil A. Sidorovпропущено...
Потому, что синтаксис надо учить.
Во второй строке переменной t, имевшей значение 3, переприсваивается значение 2. С явным указанием необязательного знака плюс.
В третьей строке выполняется оператор с присваиванием и в результате получается 4.

Всё же скорее это применение операции "унарный плюс" к константе "2".
Спасибо!
...
Рейтинг: 0 / 0
переопределенный оператор - возвращение типа по ссылке и по значению
    #38115319
MaximuS_G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще появился вопрос. Вот так переопределяю операцию "+="
Код: plaintext
1.
2.
3.
4.
5.
className& operator+=(const className &from)
{
	this->eField1 = this->eField1+from.eField1;
	return *this;
}


Возвращаю объект по ссылке, так как читал, что нужно вернуть объект по ссылке, что бы такое выражение было валидно:
Код: plaintext
1.
obj1=obj2=obj3;


Я не понимаю, почему такое выражение будет не валидным, если я верну объект по значению?
Заранее спасибо!
...
Рейтинг: 0 / 0
переопределенный оператор - возвращение типа по ссылке и по значению
    #38116006
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaximuS_G,

Если ты вернёшь объект по значению, он вернется как временный объект, и не будет lvalue. А для = слева нужно lvalue.
...
Рейтинг: 0 / 0
переопределенный оператор - возвращение типа по ссылке и по значению
    #38116371
MaximuS_G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivMaximuS_G,

Если ты вернёшь объект по значению, он вернется как временный объект, и не будет lvalue. А для = слева нужно lvalue.
Ясно, спасибо большое! А вот здесь не подскажете?
...
Рейтинг: 0 / 0
переопределенный оператор - возвращение типа по ссылке и по значению
    #38164000
Chief21
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
....
Здесь в функции operator+() операнды выбираются по ссылке, а
возвращается само значение объекта. Более эффективным решением
был бы возврат тоже ссылки:

class matrix {
// ...
friend matrix & operator+(const matrix&, const matrix&);
friend matrix& operator*(const matrix&, const matrix&);
};

Это допустимо , но возникает проблема с выделением памяти. Поскольку
ссылка на результат операции будет передаваться как ссылка на
возвращаемое функцией значение, оно не может быть автоматической
переменной этой функции. Поскольку операция может использоваться
неоднократно в одном выражении, результат не может быть и
локальной статической переменной. Как правило, результат будет
записываться в отведенный в свободной памяти объект. Обычно
бывает дешевле (по затратам на время выполнения и память данных
и команд) копировать результирующее значение, чем размещать его
в свободной памяти и затем в конечном счете освобождать выделенную
память. К тому же этот способ проще запрограммировать.
Это цитата из одной не модной книжки -))
Бьерн Страуструп: Язык программирования С++
...
Рейтинг: 0 / 0
7 сообщений из 32, страница 2 из 2
Форумы / C++ [игнор отключен] [закрыт для гостей] / переопределенный оператор - возвращение типа по ссылке и по значению
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]