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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.11.2013, 23:30   #1
Dimka-novitsek
Форумчанин
 
Аватар для Dimka-novitsek
 
Регистрация: 22.04.2013
Сообщений: 588
По умолчанию понимание operator++

У меня пока складывается впечатление, что operator++ это собствено такая функция, с названием operator++, вызывается в майне при написании обьект++, делает все что прописано в скобках у нее.

Кажится я мог бы написать функцию, что бы она делала все ровно то что и оператор перезагрузки.
В чем отличие от функции?Может я вобще ошибаюсь?

А есть ведь в С++ функции кроме ++ и --?

Я несколько забыл про доступность раздела private. Почиму я не вижу то есть компилятор не видит itsVal в функции Funktsiya ( а в операторе перезагрузки видит)??


Код:
#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;
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;
  }

Последний раз редактировалось Stilet; 10.11.2013 в 11:10.
Dimka-novitsek вне форума Ответить с цитированием
Старый 10.11.2013, 04:34   #2
Ezhik Kihze
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 639
По умолчанию

Цитата:
У меня пока складывается впечатление, что operator++ это собствено такая функция, с названием operator++, вызывается в майне при написании обьект++, делает все что прописано в скобках у нее.
А если прочитать внимательней саму запись, то окажется, что это перегрузка оператора для вашего класса. Некоторые операторы перегружать нельзя. Обычно операторы перегружают так, чтобы они делали то, что ожидается по "стандартному поведению", например, инкремент - увеличивает состояние объекта на 1.

Чтиво
ICQ: 677936656 Gmail: ekEmbed@gmail.com
Ezhik Kihze вне форума Ответить с цитированием
Старый 10.11.2013, 13:42   #3
Dimka-novitsek
Форумчанин
 
Аватар для Dimka-novitsek
 
Регистрация: 22.04.2013
Сообщений: 588
По умолчанию

Спасибо!!!
Dimka-novitsek вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
operator char*() + operator[](uint) riden Общие вопросы C/C++ 3 17.02.2013 08:45
Понимание кластеров elektroniks Компьютерное железо 3 12.02.2011 09:30
ошибка: no match for ‘operator<<’ in ‘std::operator<< [with _Traits = std::char_traits<char> Critter Общие вопросы C/C++ 5 08.08.2010 23:38