![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#41 |
Старожил
Регистрация: 02.01.2011
Сообщений: 3,328
|
![]()
Посмотрите внимательно на этот код. Он понятен?
Код:
|
![]() |
![]() |
![]() |
#42 |
Форумчанин
Регистрация: 22.05.2013
Сообщений: 245
|
![]()
8Observer8,да
|
![]() |
![]() |
![]() |
#43 |
Старожил
Регистрация: 02.01.2011
Сообщений: 3,328
|
![]()
Теперь я в коде выше хочу, чтобы функция принимала переменную с таким же именем, что и внутренняя (приватная)
Код:
Код:
Код:
|
![]() |
![]() |
![]() |
#44 |
Старожил
Регистрация: 02.01.2011
Сообщений: 3,328
|
![]()
Если с this понятно, то давайте следующую строку.
|
![]() |
![]() |
![]() |
#45 |
Форумчанин
Регистрация: 22.05.2013
Сообщений: 245
|
![]()
bool operator<(const Circle &rhs) const { return this->area < rhs.getArea(); }
|
![]() |
![]() |
![]() |
#46 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,430
|
![]()
Для сортировки нужен реализованный оператор "меньше", который сравнивает объекты класса. Сам оператор получает 2 объекта (неявный this и один явный через аргумент) и возвращает bool результат сравнения. Поскольку сравниваем по площади, то и возвращаем сравнение полей area у 2 объектов. Можно не писать getArea (доступ к полю у метода и так есть) - return this->area < rhs.area;.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись
![]() |
![]() |
![]() |
![]() |
#47 |
Старожил
Регистрация: 02.01.2011
Сообщений: 3,328
|
![]()
BDA правильно всё написал. Нам теперь лишь нужно "поиграться" с операторами.
И так, начнём немного из далека. Допустим перед нами стоит задача складывать объекты класса "Окружность". Будем складывать не площади, а радиусы (для Вас будем потом задание сделать сложение, но не по радиусам, а по площадям) Вообще нужно (при решении задачи на C++) всегда стараться в главной функции (в main) держать, как можно меньше кода. Весь код нужно помещать в функции класса или в свободные функции (вне классов). Сложение объектов должно в итоге выглядеть так: - создали объекты класса Circle - установили им радиус - сложили объекты (с = a + b) main.cpp Код:
Код:
"oparator+"() - всё, что в двойных кавычках - это название функции. Определяется она вот так: Код:
Первый способ ( редко используемый ) Код:
Код:
Код:
|
![]() |
![]() |
![]() |
#48 |
Старожил
Регистрация: 02.01.2011
Сообщений: 3,328
|
![]()
Ещё такая мысль есть, что вместо массива нужно в С++ использовать vector. Он очень удобен. Можно узнать его размер array.size() (вернёт количество элементов в нём). Он динамически расширяем, то есть мы в процессе работы программы может неограниченное число элементов в него впихнуть array.push_back(1.64); В объекте класса vector мы может хранить не только int, double, и т.д. но так же и объекты нашего класса Circle (об этом позже, сейчас посмотрите пример ниже, где мы в объект класса vector пихаем double-числа)
Класс vector подключается с помощью директирвы: #include <vector> Код:
Последний раз редактировалось 8Observer8; 30.09.2013 в 11:15. |
![]() |
![]() |
![]() |
#49 |
Форумчанин
Регистрация: 22.05.2013
Сообщений: 245
|
![]()
8Observer8,давно не заходила на форум....а что же такое &rhs,этого же нет нигде?
|
![]() |
![]() |
![]() |
#50 |
Старожил
Регистрация: 02.01.2011
Сообщений: 3,328
|
![]()
Это ссылка. Я сейчас пример небольшой напишу, чтобы наглядно было.
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Создание и уничтожение объектов. Время жизни объектов C++/C# | Anett// | Помощь студентам | 0 | 24.10.2011 23:26 |
Движение объектов используя классы | ryashya | Паскаль, Turbo Pascal, PascalABC.NET | 0 | 29.09.2011 00:07 |
Классы, объекты,поля объектов | Mr_skiner | Общие вопросы Delphi | 9 | 10.03.2011 23:07 |
Чем отличаются классы от объектов в Delphi? | JY_ | Помощь студентам | 1 | 25.01.2009 18:57 |