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

Написание класса Person с перегруженными операторами чтения, сравнения и записи - C++

Восстановить пароль Регистрация
 
Тиша
 Аватар для Тиша
1 / 1 / 0
Регистрация: 02.11.2009
Сообщений: 75
25.04.2010, 22:35     Написание класса Person с перегруженными операторами чтения, сравнения и записи #1
Товарищи, я тут решила сесть и написать прогу. Но я немного в синтаксис вообще не врубаюсь.
Помогите, кому не трудно, одну хнюшку написать, я все дальше сама догоню, просто посмотрю, как писать вообще надо.

нужно написать класс (обзовем Person) с перегруженными операторами чтения ( то бишь >>), сравнения и записи ( <<)

эт все)
я просто вообще не догоняю буковки, по справочнику порылась - вроде поняла, но вроде нихр...ничего не выходит.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.04.2010, 22:35     Написание класса Person с перегруженными операторами чтения, сравнения и записи
Посмотрите здесь:

C++ Вывод полей класса после сравнения
C++ Описание класса с именем PERSON
C++ Разница между объявлениями const Person p1 и Person const p1
Ошибка записи и чтения объектов C++
C++ Блокировка чтения-записи в QNX
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2293 / 1663 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
25.04.2010, 23:00     Написание класса Person с перегруженными операторами чтения, сравнения и записи #2
Тиша, для вывода так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
 
const int max_lenght = 256;
 
class Person {
  friend std::ostream& operator << (std::ostream& os, const Person& person);
public:
  Person(const char* name) {
    strcpy(_name, name);
  }
private:
  char _name[max_lenght];
}
 
std::ostream& operator << (std::ostream& os, const Person& person) {
  return os << person._name << std::endl;
}
Для ввода практически идентично.
Тиша
 Аватар для Тиша
1 / 1 / 0
Регистрация: 02.11.2009
Сообщений: 75
25.04.2010, 23:05  [ТС]     Написание класса Person с перегруженными операторами чтения, сравнения и записи #3
пхах, ругаеться))
Спасибо))
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2293 / 1663 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
25.04.2010, 23:36     Написание класса Person с перегруженными операторами чтения, сравнения и записи #4
Тиша, кто, на что и как ругается.
Тиша
 Аватар для Тиша
1 / 1 / 0
Регистрация: 02.11.2009
Сообщений: 75
27.04.2010, 10:42  [ТС]     Написание класса Person с перегруженными операторами чтения, сравнения и записи #5
на 15 строчку:

Person: нет подходящего конструктора по умолчанию
os: необъявленный идентификатор
синтаксическая ошибка: const

я просто еще не разобралась, щас разберусь, сама думаю все сделаю.

Добавлено через 11 минут
конструктор я нарисовала, на остальное ругается

Добавлено через 44 минуты
ррррррррр....
не въезжаю...
мож по строчкам объяснить, что и где мы делаем, пожалуйста)

Добавлено через 37 минут
я поняла что я не понимаю. Не понимаю я перегрузку операторов. Ну вообще никак. Литературу - читала, на лекциях - записывала, всё равно не понимаю, КАК вообще это пишется (синтаксис всмысле)

Добавлено через 8 минут
так...если в 13 поставить ; то ругаеться только на strcpy
Тиша
 Аватар для Тиша
1 / 1 / 0
Регистрация: 02.11.2009
Сообщений: 75
01.05.2010, 15:36  [ТС]     Написание класса Person с перегруженными операторами чтения, сравнения и записи #6
Товарищи, ну кому не трудно, объясните девушке что это вообще такое, ну не понимаю я((
лендер
46 / 46 / 2
Регистрация: 12.01.2010
Сообщений: 183
01.05.2010, 15:44     Написание класса Person с перегруженными операторами чтения, сравнения и записи #7
для strcpy() нада подключить <string.h>
тобиш написать самого верху #include <string.h>
Тиша
 Аватар для Тиша
1 / 1 / 0
Регистрация: 02.11.2009
Сообщений: 75
01.05.2010, 15:50  [ТС]     Написание класса Person с перегруженными операторами чтения, сравнения и записи #8
да это я подключила, все равно кручу-верчу, и не виходит
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2293 / 1663 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
01.05.2010, 16:19     Написание класса Person с перегруженными операторами чтения, сравнения и записи #9
Тиша, вот полный пример:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <iostream>
#include <cstring>
 
const int max_lenght = 256;
 
class Person {
  friend std::ostream& operator << (std::ostream& os, const Person& person);
public:
  Person(const char* name) {
    std::strcpy(_name, name);
  }
private:
  char _name[max_lenght];
};
 
std::ostream& operator << (std::ostream& os, const Person& person) {
  return os << person._name;
}
 
int main()
{
  Person person("Test person");
 
  std::cout << person << std::endl;
 
  return 0;
}
Класс Person имеет один конструктор, принимающий строку name (строки 9-11). Данный конструктор копирует переданную строку во внутреннюю переменную _name. Вызов данного конструктора происходит в строке 22.
Бинарный оператор:
C++
1
2
3
std::ostream& operator << (std::ostream& os, const Person& person) {
  return os << person._name;
}
принимает первым (левым) параметром ссылку на экземпляр потока вывода класса std::ostream (коем является std::cout), вторым (правым) константную ссылку на экземпляр класса Person.
Вызов данного оператора представлен в строке:
C++
1
std::cout << person ...;
Как видишь слева в данном выражении стоит экземпляр класса std::ostream, а справа экземпляр Person. Компилятор ищет оператор, принимающий данные аргументы, и успешно находит, приведенный выше.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.05.2010, 16:58     Написание класса Person с перегруженными операторами чтения, сравнения и записи
Еще ссылки по теме:

C++ Ошибка. Матрица с перегруженными операторами
C++ Передача в шаблон класса с перегруженными операторами
Реализовать операторы сравнения двух экземпляров класса (==, !==) C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Тиша
 Аватар для Тиша
1 / 1 / 0
Регистрация: 02.11.2009
Сообщений: 75
01.05.2010, 16:58  [ТС]     Написание класса Person с перегруженными операторами чтения, сравнения и записи #10
О))Спасибо))))вроде все поняла)))спасибо-спасибо-спасибо))
Yandex
Объявления
01.05.2010, 16:58     Написание класса Person с перегруженными операторами чтения, сравнения и записи
Ответ Создать тему
Опции темы

Текущее время: 15:34. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru