Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Помогите!!!  (Прочитано 4593 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Human
Гость
« : 02-05-2006 21:01 » 

Вот один из методов класса
Код:
void Note::sort(){
for (int i=0;i<8;i++)
for (int j=0;j<8;j++)
if (Not[i].name>Not[j].name)
{
N=Not[j];
Not[i]=Not[j];
Not[j]=N;
}
for (int i=0;i<8;i++)
for (int j=0;j<8;j++)
if (Not[i].soname>Not[j].soname)
{
N=Not[j];
Not[i]=Not[j];
Not[j]=N;
}
}
Преподаватель сказал произвести перегрузку оператора = наверное без изменения его изначального значения...помогите пожайлуста....горю!

Finch Не забываем пользоваться тэгом [ code ][ /code ]
« Последнее редактирование: 02-05-2006 21:24 от Finch » Записан
nikedeforest
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #1 : 02-05-2006 21:40 » 

А в чем проблема? Не знаешь как перегрузить? Или нет идеи что именно выполнить с помощью перегрузки.
Если первое, то перегружать надо так
Код:
Note operator=(Note op2)
{
 // тут код уже пошел к примеру
 a=op2.a;
}
А если второе, то одного метода класса мало, нужен весь класс и его смысл. А вообще, придумать уж и сам сможешь, только не ленись Ага
Записан

ещё один вопрос ...
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #2 : 02-05-2006 21:52 » 

Human, У тебя пример вообше компилится? Судя по тому, что ты дал во втором своем посте
Код:
struct note{
char name[30],soname[30];
char number[12];
int date[3];}
        Not[8];
note N;
Во первых не понятно, что есть Not. Но судя по всему все таки тип note. Во вторых, у меня компилятор на такую строку if (Not.soname>Not[j].soname) обругается сразу. Строки так не сравнивают в классическом С++.
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
Human
Гость
« Ответ #3 : 02-05-2006 22:09 » 

2nikedeforest:
Спасибо большое, я не знаю как перегружать, так сложилось, что я сдаю зачет толком не зная с++ даже на том уровне,на котором требуют(уровень скажем прямо невысокий)...изучаю по примерам,книгам...в общем сроки очень сжатые...и на данном этапе непонимаю смысла перегрузки оператора присваивания в данном примере,ну неважно, у меня вопрос могу ли я смело вписать метод
Код:
Note operator=(Note op2)
{
 // тут код уже пошел к примеру
 a=op2.a;
}
в свой код? то есть "a=op2.a;" - это некая абстрактная запись,или она применима к моему примеру,и если не трудно, не могли бы вы объяснить что означает эта строчка!!! И почему параметр функции перегрузки - Note op2,что означает op2...
Записан
nikedeforest
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #4 : 02-05-2006 22:47 » 

Ты же книги читаешь, ну как же так, откуда такие вопросы?
Этот код будет верен, если у тебя в классе есть переменная <a>. Это я тебе так для примера кинул.
Переопределять оператор = надо так, как это нужно тебе, просто есть что-то вроде соглашения не доводить до маразма. Т.е. чтобы = означало какое-то присвивание, а не вывод "Привет Мир" 10 раз.
Возьмем к примеру два объекта одного класса
Note a, b;
если записать a=b, то произойдет побитовое копирование (надеюсь ты это понимаешь, но пояснюд). Т.е. все переменные класса а получат значения одноименных переменных класса b. Но есть одно но. Это программисту не всегда надо, а порой он желает этого исбежать (например, если используются указатели и массивы). Вот для этого и перегружают =.
Перегружая = ты можешь реализовать свою задуску определенную, тебя никто в этом не ограничивает.
Так, а теперь о параметре op2
Это параметр передается автоматически.
a=b
в данном случае ор2 - это объект b. Т.е. то, что стоит справа от =, то и ор2 ВСЕГДА!
Читай книги, там об этом хорошо изложено, с примерами. За 20 минут поймешь.

p.s. переименуй свои темы. Знаешь как надоели эти пестрые заголовки "Помогите" и т.п. . У тебя вполне четкий вопрос "Как переопределить оператор =". Так и назови свою тему. И про коструктор копирования переименуй.
« Последнее редактирование: 02-05-2006 22:52 от nikedeforest » Записан

ещё один вопрос ...
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines