Форум программистов, компьютерный форум CyberForum.ru

Оператор присваивания. - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Замена первых элементов каждой строки квадратной матрицы на сумму элементов этой строки http://www.cyberforum.ru/cpp-beginners/thread425842.html
Замена первых элементов каждой строки квадратной матрицы на сумму элементов этой строки
C++ Последовательности Помогите, пожалуйста, разобраться с программой. Готов выслушать предложения откликнувшихся. Форум - не место для обмена контактами. Хотите бесплатной помощи - будьте готовы к тому, что она будет публичной. http://www.cyberforum.ru/cpp-beginners/thread425820.html
Функция декремента C++
Вот функция которая декрементирует время, если в коде написать 59, то работает, но вот когда отнимаешь какое то кол - во секунд, например 00:00:00 (час:минута:секунда) - 20 секунд получается 23:59:39, если вместо 59 написать 60, то работает, но декремент получается на 1 меньше чем надо. Как можно по другому написать? Подскажите void MyTime::Prev() { if (hour == 0) ...
C++ Считывание с файла
Здравствуйте. Нужна помощь в написании программы: Дана непустая последовательность слов разделенных пробельными символами, расположенных в некотором файле. Напечатать эти слова в следующем порядке: Сначала по алфавиту все однобуквенные слова, потом по алфавиту двухбуквенные и т.д. Одинаковые слова печатать по одному разу. Заранее спасибо)
C++ Нужен пример хэширования http://www.cyberforum.ru/cpp-beginners/thread425769.html
Здравствуйте! Ни как не могу понять хэширование,если не трудно, то напишите какие нибудь простейшие примеры реализации. Заранее благодарю!
C++ Заменить все значения элементов матрицы нулями, значения которых меньше числа k Дан двумерный массив n*m и число k. Значения элементов вводятся с клавиатуры. С клавиатуры вводится число k. Заменить все значения элементов массива нулями, значения которых меньше числа k. подробнее

Показать сообщение отдельно
Vergil111
31 / 31 / 6
Регистрация: 30.11.2010
Сообщений: 81
10.01.2012, 23:43     Оператор присваивания.
Начнем по порядку. Для начала разберем код, который вы привели в примере
Цитата Сообщение от pormonik Посмотреть сообщение
cout<<"\nОператор присваивания c=a\t"; * *
* * * * String c=a; * * * * * * * * * * * * * * * * * * * // Само присваивание
это НЕ присваивание.
В случаях, когда вы пишете
C++
1
2
String c=a; 
String c(a);
это вызывается конструктор копирования по умолчанию.
Далее рассматриваем начальную часть кода:
Цитата Сообщение от pormonik Посмотреть сообщение
class String {
String& operator = (String& s); * * * *// перегрузка оператора присваивания
}
опять же является неверной. Вы не можете осуществить возврат результата по ссылке при работе с локальными переменными данной функции.
Правильная запись будет выглядеть так:
C++
1
String operator = (String& s);
.
Теперь подробно про перегрузку оператора индексации.
Допустим у нас есть определение функции следующего вида:
C++
1
2
3
int& operator[](int n){
return arr[n]; //возвращаем некоторый элемент объекта класса, эмулирующего массив
}
Итак для чего это собственно надо и зачем возвращать элемент по ссылке:
C++
1
2
3
safearr sa1;//задал объект класса, эмулирующего массив
sa1[0]=10;//используем функцию слева от оператора равно(в этом случае возврат значения по ссылке нужен для инициализации элемента нашего массива).
int temp=sa1;//в этом случае мы используем функцию справа от знака равно и соответственно используем ее уже для получения значения в нашем массиве
и да, как верно заметил DU
Цитата Сообщение от DU Посмотреть сообщение
Строка в него должна передаваться по константной ссылке.
 
Текущее время: 23:09. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru