Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
1 / 1 / 0
Регистрация: 02.11.2009
Сообщений: 75
1

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

25.04.2010, 22:35. Просмотров 627. Ответов 9
Метки нет (Все метки)

Товарищи, я тут решила сесть и написать прогу. Но я немного в синтаксис вообще не врубаюсь.
Помогите, кому не трудно, одну хнюшку написать, я все дальше сама догоню, просто посмотрю, как писать вообще надо.

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

эт все)
я просто вообще не догоняю буковки, по справочнику порылась - вроде поняла, но вроде нихр...ничего не выходит.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.04.2010, 22:35
Ответы с готовыми решениями:

Создание класса с перегруженными операторами
Как можно переделать данную программу с перегруженными операторами, чтобы функцию-член класса был...

Передача в шаблон класса с перегруженными операторами
У меня есть класс TProc: template&lt;class Type&gt; class TProc { private: Type Lop_Res; Type...

Ошибка. Матрица с перегруженными операторами
Здравствуйте, Прошу помочь с ошибкой: Студия не принимает строку: m3 = m1 + m2; //...

Класс "Вектор" с перегруженными операторами
У меня есть пример задачи и мне нужно сделать похожее, только с своими значениями. using System;...

9
Эксперт С++
2330 / 1703 / 148
Регистрация: 06.03.2009
Сообщений: 3,675
25.04.2010, 23:00 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 / 1 / 0
Регистрация: 02.11.2009
Сообщений: 75
25.04.2010, 23:05  [ТС] 3
пхах, ругаеться))
Спасибо))
0
Эксперт С++
2330 / 1703 / 148
Регистрация: 06.03.2009
Сообщений: 3,675
25.04.2010, 23:36 4
Тиша, кто, на что и как ругается.
0
1 / 1 / 0
Регистрация: 02.11.2009
Сообщений: 75
27.04.2010, 10:42  [ТС] 5
на 15 строчку:

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

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

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

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

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

Добавлено через 8 минут
так...если в 13 поставить ; то ругаеться только на strcpy
0
1 / 1 / 0
Регистрация: 02.11.2009
Сообщений: 75
01.05.2010, 15:36  [ТС] 6
Товарищи, ну кому не трудно, объясните девушке что это вообще такое, ну не понимаю я((
0
48 / 48 / 10
Регистрация: 12.01.2010
Сообщений: 183
01.05.2010, 15:44 7
для strcpy() нада подключить <string.h>
тобиш написать самого верху #include <string.h>
0
1 / 1 / 0
Регистрация: 02.11.2009
Сообщений: 75
01.05.2010, 15:50  [ТС] 8
да это я подключила, все равно кручу-верчу, и не виходит
0
Эксперт С++
2330 / 1703 / 148
Регистрация: 06.03.2009
Сообщений: 3,675
01.05.2010, 16:19 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. Компилятор ищет оператор, принимающий данные аргументы, и успешно находит, приведенный выше.
1
1 / 1 / 0
Регистрация: 02.11.2009
Сообщений: 75
01.05.2010, 16:58  [ТС] 10
О))Спасибо))))вроде все поняла)))спасибо-спасибо-спасибо))
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.05.2010, 16:58

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Класс "вектор" с перегруженными операторами
Класс – вектор, Члены класса – 3 прямоугольные декартовые координаты, Методы – конструктор,...

Использование операторов сравнения с операторами SOME/ANY
Выведите все данные (*) о тех сотрудниках, зарплаты которых больше, чем средняя зарплата в хотя бы...

Использование свойств для чтения и записи данных в закрытые поля класса
Добрый день ! Как я понял свойства используют для чтения и записи данных в закрытые поля класса...

Создать класс Person со свойствами name, gender, age, married и методами чтения/установки этих свойств
Задание: Код: Person.h #include &lt;string&gt; #ifndef PERSON_H #define PERSON_H class Person {...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.