Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Вопрос по ASCII кодов https://www.cyberforum.ru/ cpp-beginners/ thread121873.html
Я сделал ввод одномерного символьного массива, сделал сортировку, но в выводе мне вывело не символы, (в моем случае англ. алфавит) а их ASCII код. (правельно отсортированый). Как сделать вывод...
Размещение элементов в массиве C++
Задача: Разместить все элементы с нулевым значением в левой части массива, элементы с негативными значением за ними, а за ними - элементы с положительным значением Дано: Розмерность массива ...
C++ Присвоение значения фунции fopen указателю на файл
В "простом" компиляторе C++ я бы записал так: FILE * f; if ( f=fopen(file_name, "r") == 0) //проверка на существование файла {бла бла бла} Всё бы ничего, но в MVS08 видите ли... вот оно что: ...
C++ Структуры_Т Здравствуйте всем Задача такая: Создать список студентов с оценками по нескольким дисциплинам. Отсортировать список по убыванию среднего балла. Имеющих двойки удалить из списка С применением... https://www.cyberforum.ru/ cpp-beginners/ thread121855.html
C++ IDE для программирования на С/С++ https://www.cyberforum.ru/ cpp-beginners/ thread121842.html
Ребят, а есть версия Eclipse в компилятором MinGW? А то по отдельности скачал, а как там Eclipse с компилятором заставить работать не знаю... Заранее спасибо!
C++ почему выдает access violation?
подскажите плиз изза чего доступ ограничивает, и как сделать чтоб я мог каждому элементу массива структур присваивать по строке......заранее спасибо)) #include "stdafx.h" #include <stdio.h>...
освобождение памяти от элементов списка C++
подскажите как высвободить память,последняя часть проги,сама прога пашет,когда до высвобождения доходит,вылетает системная ошибка и открывает код ассемблера про операцию delete....заранее спасибо)))...
C++ Обработка символьной информации Обнаружено, что в тексте пропущены некоторые слова и словосочетания. Эти слова и словосочетания заданы отдельным списком в том порядке, в котором они должны быть вставлены в текст. Места вставки... https://www.cyberforum.ru/ cpp-beginners/ thread121832.html
C++ на основе данных входного файла составить список вкладчиков(ФИО,№ счёта,сумма,год открытия счёта)Вывести в new файл инфу об открывших счёт в этом году https://www.cyberforum.ru/ cpp-beginners/ thread121818.html
Решить задачу, используя структуру, содержащую члены-данные и члены-функции. Замечание. Подразумевается, что исходная информация хранится в текстовом файле input.txt, каждая строка которого...
C++ мучения с массивами Дана целочисленная матрица 9x9. Определить количество нулевых элементов ниже главной и побочной диагонали. Сформировать одномерный массив, содержащий количество отрицательных элементов каждого... https://www.cyberforum.ru/ cpp-beginners/ thread121803.html
Эксперт С++
2330 / 1703 / 148
Регистрация: 06.03.2009
Сообщений: 3,675
01.05.2010, 16:19 0

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

01.05.2010, 16:19. Просмотров 629. Ответов 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. Компилятор ищет оператор, принимающий данные аргументы, и успешно находит, приведенный выше.

Вернуться к обсуждению:
Написание класса Person с перегруженными операторами чтения, сравнения и записи
1
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.05.2010, 16:19
Готовые ответы и решения:

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

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

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

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

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