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

Перегрузка операторов С++ - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как передать массив в функцию? http://www.cyberforum.ru/cpp-beginners/thread443133.html
Помогите написать функцию, которая возвращает значение true, если символ, полученый функцией как аргумент, является гласной буквой английского алфавита. Вот мой нерабочий вариант: #include <cstdlib> #include <iostream> #include <string> using namespace std; char giasn(char *l) { if ((l='a') || (l='i') || (l='e') || (l='u') || (l='y') || (l='o')){ return true;
C++ Найти элементы, которые по модулю меньше некоторого значения, введенного с клавиатуры задано матрицу размерностью N * M с произвольным многочисленных элементов. Найти элементы, которые по модулю меньше некоторого значения, введенного с клавиатуры Помогите плис срочно надо прога http://www.cyberforum.ru/cpp-beginners/thread443118.html
C++ Напечатать все слова, которые состоят из тех же букв что и последнее слово текста
Прог на c++ дан текст,который заканчивается точкой.текст состоит из слов,разделенных пробелами,слова представляют собой произвольную последовательность символов,отличных от пробела .напечатать все слова,котрые состоят из тех же букв что и последнее слово текста заранее спасибо!
C++ задание по членам..valarray
10. (*3) Реализуйте Matrix, используя для представления элементов члены valarray (а не указатель или ссылку на valarray). кто что думает. я так понял нужна 2х мерная матрица, но увы незя в ней держать ни указатель ни сслыку на valarray, на основании которого она строится. Matrix(valarray<int>& val, siz_t dim1, size_t dim2) - создание матрицы и далее надо использовать те самые члены....
C++ Задачи на массивы С++ http://www.cyberforum.ru/cpp-beginners/thread443064.html
1)решить двумя способоми, сначала используя одномерный массив а потом двумерный.( и только с помощьюь массивов,никак по другому) Задача:Дана последовательность целых чисел. Подсчитать среднее арифметическое отрицательных элементов. 2)Решить используя одномерный массив. Задача:Дана последовательность из n действительных чисел. Найти номер первого минимального элемента. 3)Дан массив размером...
C++ вывести минимальное значение Из величин? определяемых выражением а=sinx, b=cosx, c=ln|x|.ПРи заданном х, ввывестти на экран дисплея минимальное значение! подробнее

Показать сообщение отдельно
lemegeton
2918 / 1347 / 134
Регистрация: 29.11.2010
Сообщений: 2,721
09.02.2012, 15:52     Перегрузка операторов С++
Можно перегружать операторы потокового ввода-вывода.
Пример для класса "Студент". В качестве полей -- имя и год поступления.

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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
#include <string>
#include <iostream>
#include <sstream>
#include <vector>
 
// класс интерфейс сериализуемого объекта
class Serializable {
 public:
  virtual std::ostream &serialize(std::ostream &stream) = 0;
  virtual std::istream &deserialize(std::istream &stream) = 0;
};
 
// перегрузка оператора вывода
std::ostream &operator<<(std::ostream &stream, Serializable &object) {
  return object.serialize(stream);
}
 
// перегрузка оператора ввода
std::istream &operator>>(std::istream &stream, Serializable &object) {
  return object.deserialize(stream);
}
 
// сериализуемый контейнер-обертка над сериализуемым объектом
template <class T>
class Table : public Serializable {
 public:
  typedef typename std::vector<T>::iterator Iterator;
  typedef typename std::vector<T>::const_iterator ConstIterator;
  Table() : data() {}
  Table(std::istream &stream) : data() {
    deserialize(stream);
  }
  void pushBack(const T &value) { data.push_back(value); }
  void pushFront(const T &value) { data.push_front(value); }
  Iterator erase(Iterator what) {
    return data.erase(what);
  }
  void clear() { data.clear(); }
  size_t size() { return data.size(); }
  bool empty() { return data.empty(); }
  Iterator begin() { return data.begin(); }
  Iterator end() { return data.end(); }
  ConstIterator begin() const { return data.begin(); }
  ConstIterator end() const { return data.end(); }
  virtual std::ostream &serialize(std::ostream &stream) {
    for (Iterator i = begin(); i != end(); ++i)
      stream << *i;
    return stream;
  }
  virtual std::istream &deserialize(std::istream &stream) {
    data.clear();
    while (stream.good())
      data.push_back(T(stream));
    return stream;
  }
 private:
  std::vector<T> data;
};
 
// сериализуемый объект
class Student : public Serializable {
 public:
  Student() : name_(), admissionYear_() {}
  Student(std::istream &stream) {
    deserialize(stream);
  }
  Student(std::string name, size_t admissionYear)
    : name_(name), admissionYear_(admissionYear) {}
  const std::string &getName() const { return name_; }
  size_t getAdmissionYear() const { return admissionYear_; }
  virtual std::ostream &serialize(std::ostream &stream) {
    stream << getName() << ";" << getAdmissionYear() << ";" << std::endl;
    return stream;
  }
  virtual std::istream &deserialize(std::istream &stream) {
    std::string line;
    getline(stream, line);
    std::istringstream source(line);
    getline(source, name_, ';'); // deserialize name
    std::string buffer;
    getline(source, buffer, ';'); // deserialize year
    std::stringstream(buffer) >> admissionYear_;
    return stream;
  }
 private:
  std::string name_;
  size_t admissionYear_;
};
 
int main(int argc, char *argv[]) {
  // можно читать из любого потока, в том числе, из файла
  std::stringstream source("Ivanov;2001;\nPetrov;2001;\nSidorov;2002;");
  Table<Student> students(source);
  // удаление первого объекта
  students.erase(students.begin());
  // вывод
  for (Table<Student>::Iterator i = students.begin(); i != students.end(); ++i)
    std::cout << i->getName() << std::endl;
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru