Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.11.2013, 22:39   #1
Dimka-novitsek
Форумчанин
 
Аватар для Dimka-novitsek
 
Регистрация: 22.04.2013
Сообщений: 588
По умолчанию Как вывести обьект с помощю cout ??

Очень интересно было бы выводить не указатель, а обьект!!
ведь функции и оператор перезагрузки выводят же обьект ( что кстати поначалу показалось мне чем-то невоспринимаемым!).
Простите, если я все еще путаюсь в терминах или не очень понимаю что-л.
А вот
Код:
#include <string> 
#include <iostream> // для объекта cout
using namespace std;
 
#include<iomanip>
//Этот файл содержит большую часть манипуляторов C++. Если вы не знаете, что такое манипулятор, не беспокойтесь. 
Просто подключите это файл смело и не раздумывая  вместе с iostream, хуже не станет.
#include<fstream> 
//Подключается при работе с файлами.


  class Counter
  {
 public:
 Counter();
 Counter(int val);
 ~Counter(){ }
 int GetItsVal()const { return itsVal; }
 void SetItsVal(int x) { itsVal = x; }
 void Increment() { ++itsVal; }
 Counter operator++ ();
 Counter operator++ (int); // оператор постинкремента
 Counter Funktsiya ();
 private:
 int itsVal;
  };


  Counter::Counter():
  itsVal(0)
  { cout << "Counter::Counter() " <<  endl; }


  Counter::Counter(int val):
 itsVal(val)
  {cout << "Counter::Counter(int val) " <<  endl; }

 
 Counter Counter::operator++()
  {
   ++itsVal;//**itsVal;
   cout << "Counter Counter::operator++() " <<  endl;
   return Counter (itsVal);
  }


 Counter Counter::operator++(int x)
{
Counter temp(*this);
itsVal++;
cout << "Counter Counter::operator++(int x) " <<  endl;  cout << this << "this " <<  endl;
return temp;
 }



 /*Counter Funktsiya ()
	  {
   ++itsVal;//**itsVal;
   cout << "Counter Funktsiya () " <<  endl;
   return Counter (itsVal);
  };*/
  

  int main()
  {
 cout << "main()Counter i " <<  endl;
 Counter i; 

 cout << "main()i.GetItsVal() " << i.GetItsVal() << endl;

 cout << "main()i.Increment() " <<  endl;
 i.Increment(); 

 cout << "main()i.GetItsVal() " << i.GetItsVal() << endl;

 cout << "main()++i " <<  endl;
 ++i;

 cout << "main()i.GetItsVal() " << i.GetItsVal() << endl;

 cout << "main()Counter a = ++i " <<  endl;
 Counter a = ++i;

 cout << "main()a.GetItsVal() " << a.GetItsVal()<< endl;

 cout << "main()i.GetItsVal() " << i.GetItsVal() << endl;

 cout << "main()Counter b = i++ " <<  endl;
 Counter b = i++;

 cout << "main()a.GetItsVal() " << a.GetItsVal()<< endl;

 cout << "main()i.GetItsVal() " << i.GetItsVal() << endl;

 cout << "main()b.GetItsVal() " << b.GetItsVal() << endl;

// cout << "main()cout i++ " << i++ << endl;

 system("pause  ");  return 0;
  }
А вот строка // cout << "main()cout i++ " << i++ << endl; она вторая снизу!
не вижу нумерации строк, было бы проще указывать.

Пожалуста, подробно, имено подробно обьясните, покажите, что и как можно сделать.
Что откуда втикает и как вытикает.

Последний раз редактировалось Stilet; 19.11.2013 в 23:25.
Dimka-novitsek вне форума Ответить с цитированием
Старый 19.11.2013, 23:26   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
функции и оператор перезагрузки выводят же обьект
Где??? О_о
Вот это?:
Цитата:
cout << "Counter Counter:perator++() " << endl;
Так это только потому что программист прописал такую строку.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 20.11.2013, 00:42   #3
Dimka-novitsek
Форумчанин
 
Аватар для Dimka-novitsek
 
Регистрация: 22.04.2013
Сообщений: 588
По умолчанию

Не, ну вообще в принципе же выводят... Так return temp;хотя бы...
Dimka-novitsek вне форума Ответить с цитированием
Старый 20.11.2013, 00:48   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А-а-а не на экран?
Ну returm temp в данном случае возвращает созданный объект всего лишь. Но не выводит, а именно возвращает.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 20.11.2013, 06:48   #5
nikmoon
Форумчанин
 
Регистрация: 13.11.2013
Сообщений: 149
По умолчанию

Оказывается это делается легко и непринужденно.
Код:
ostream &operator<<(ostream &stream, const Counter &counter)
{
  stream << counter.GetItsVal();
  return stream;
}
Г. Шилдт. C++ Базовый курс. 3-е издание, стр. 442.

Последний раз редактировалось nikmoon; 20.11.2013 в 08:28.
nikmoon вне форума Ответить с цитированием
Старый 20.11.2013, 19:24   #6
Igor95
Форумчанин
 
Регистрация: 03.01.2013
Сообщений: 388
По умолчанию

Цитата:
Сообщение от nikmoon Посмотреть сообщение
Оказывается это делается легко и непринужденно.
Код:
ostream &operator<<(ostream &stream, const Counter &counter)
{
  stream << counter.GetItsVal();
  return stream;
}
Г. Шилдт. C++ Базовый курс. 3-е издание, стр. 442.
ВСЕ поля объккта counter будут доступны. Не обязательно здесь через метод обращаться к значению. Можно ведь и напрямую.
Igor95 вне форума Ответить с цитированием
Старый 20.11.2013, 20:53   #7
Dimka-novitsek
Форумчанин
 
Аватар для Dimka-novitsek
 
Регистрация: 22.04.2013
Сообщений: 588
По умолчанию

Спасибо всем!!!! Читаю..

Шилдт у меня есть, но сразу отыскать нужное не могу..

Это в главе перегрузка операторов?

Что это тут за знак << ? Что это ostream &stream?
Можно на пальцах, простите пожалуста, что во всех строках происходит?


А можно все же выводить обьект с помощю cout ?

Последний раз редактировалось Dimka-novitsek; 20.11.2013 в 21:09.
Dimka-novitsek вне форума Ответить с цитированием
Старый 20.11.2013, 21:30   #8
Igor95
Форумчанин
 
Регистрация: 03.01.2013
Сообщений: 388
По умолчанию

Читайте про перегрузку операторов.
std:stream& stream - ссылка на объект типа output stream (стандартный поток вывода). Поток - абстрактное понятие, описывающее I/O.
Igor95 вне форума Ответить с цитированием
Старый 20.11.2013, 21:34   #9
Dimka-novitsek
Форумчанин
 
Аватар для Dimka-novitsek
 
Регистрация: 22.04.2013
Сообщений: 588
По умолчанию

Спасибо!!!
Dimka-novitsek вне форума Ответить с цитированием
Старый 21.11.2013, 02:06   #10
nikmoon
Форумчанин
 
Регистрация: 13.11.2013
Сообщений: 149
По умолчанию

Цитата:
Сообщение от Igor95 Посмотреть сообщение
ВСЕ поля объккта counter будут доступны. Не обязательно здесь через метод обращаться к значению. Можно ведь и напрямую.
Не надо путать. В данном конкретном случае доступа к приватным полям не будет.
Прямой доступ к приватным членам эта функция получит лишь после объявления ее другом класса.
nikmoon вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
cout., cin., cout.setf, cout.unsetf kineziz Общие вопросы C/C++ 1 06.05.2012 02:50
как вытащить метод для елемента массива с помощю рефлексии Євгеній C# (си шарп) 0 18.10.2011 17:53
Как подключиться к MySQL c помощю Delphi... Kristian БД в Delphi 5 31.08.2011 23:49
Как востановить случайно удалённый обьект в с++ билдере sigmanen C++ Builder 1 06.12.2010 20:39
как сделать поиск по dbgrid с помощю ado IGONZO БД в Delphi 5 16.08.2010 03:15