|
|
|
о перегрузке операторов
|
|||
|---|---|---|---|
|
#18+
ну значится маюсь с перегрузкой операторов. Я так понял , что данное средство нужно для того, чтобы определять действия с объектами, ну т.е что с ними моно делать, так ? Может добавите важные замечания по использованию данного средства. //пример взял с форума #include <iostream.h> class some { public: some(int i = 0) : i_(i) {} int i_; }; some operator + (const some &a, const some &b) { return some(a.i_+b.i_);} //////////////////////////////////////////////////////////////////////////////// void main() { some a(10); some b(20); some c = a + b; } Не очень в башке укладывается эта замысловатость! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2003, 10:51 |
|
||
|
о перегрузке операторов
|
|||
|---|---|---|---|
|
#18+
в страуструпе очень наглядно и понятно описано зачем нужна перегрузка опираторов и как реализовывается. если нет кники пиши сюда 123456789098@mail.ru я вышлю или поиши в тырнете. я не помню откуда у меня файл. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2003, 11:39 |
|
||
|
о перегрузке операторов
|
|||
|---|---|---|---|
|
#18+
мыло странное однако у тубя? оно есть правильное? Сколько файл весит в архиве? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2003, 12:30 |
|
||
|
о перегрузке операторов
|
|||
|---|---|---|---|
|
#18+
ну да, перегрузку лучше внимательно изучать по книге, приведу отрывок из одного моего поста: ...Прикладной программист/разработчик, исследуя полученные спецификации, пытается спроецировать сущности предметной области на разрабатываемые конструкции/типы (классы, структуры), а взаимодействия между этими сущностями описывает в виде процедур (в чистом ООП - методы классов). В конечном итоге, если разработчик шел по правильному пути, он получает отлаженный набор классов, в рамках которого решение любых задач из требуемой предметной области оборачивается весьма несложной задачей и обходиться в малое число строк исходного кода. Т.е. на старе мы имеет некий уровень, "стартовый" уровень. Это то, что дано нам языком и библиотеками, имеющимися в распоряжении. И есть уровень некоей готовности под определенную прикладную область, "прикладной" уровень. Так вот, в случае языка С++, мы имеем возможность "подобраться" к прикладному уровню гораздо ближе, чем в случае Java и C#. Нам в этом помогает возможность переопределения практически ЛЮБЫХ операторов языка , что делает синтаксис программы наглядным а суть алгоритмов - очевидной, а так же теже самые шаблоны... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2003, 00:53 |
|
||
|
о перегрузке операторов
|
|||
|---|---|---|---|
|
#18+
... а так же теже самые шаблоны... http://www.uneta.org/article.aspx?article=719A4A69-8390-483A-8478-A55F53AD1380 ждемс. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2003, 09:01 |
|
||
|
о перегрузке операторов
|
|||
|---|---|---|---|
|
#18+
для пользователя неважно, как ты реализовал, важно, ЧТО ты ему предоставил. Например, для сложения двух объектов типа some мы можем дать ему две возможности: первая - функция SumTwoFigures вторая - оператор + ну вот, теперь сам посуди, что красивее и понятнее при использовании void main() { some a(10); some b(20); some c = a+b; } или void main() { some a(10); some b(20); c = SumTwoFigures(a, b); } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2003, 09:31 |
|
||
|
о перегрузке операторов
|
|||
|---|---|---|---|
|
#18+
2 fib Конечно 1 вариант читается удобней. У меня тут ешо вопрос созрел В этом куске кода я перегружаю присвоение, но вот только мне одно не понятно. Я думал что знак ссылки ставится перед идентификатором т.е &rMyRef1 , а в приведенном куске идет ссылка на объект, но знак & почему в конце? Или я чо то не догнал? Вот кусок #include <iostream.h> class counter{ public: counter(); counter(int initialValue);// ~counter(){}; void SetVal(int x){itsVal=x;}// int GetItsVal() const {return itsVal;} counter operator= (const counter& );//вот это не ясно почему counter& private: int itsVal; }; ////////////////////////////////////////////////////////////////////////////// counter::counter(int initialValue): itsVal(initialValue) {} ////////////////////////////////////////////////////////////////////////////// counter::counter(): itsVal(0) {} ///////////////////////////////////////////////////////////////////////////// counter counter::operator= (const counter &rhs) { return counter(itsVal=rhs.GetItsVal()); } ///////////////////////////////////////////////////////////////////////////// void main(){ counter v1(12),v2(45); v2.SetVal(1976); v1=v2; cout<<" v1 "<<v1.GetItsVal()<<endl; cout<<" v2 "<<v2.GetItsVal()<<endl; } Здесь я копирую значение переменной из одного объекта в другой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2003, 11:16 |
|
||
|
о перегрузке операторов
|
|||
|---|---|---|---|
|
#18+
почему в конце? а нет разницы где. Код: plaintext 1. 2. 3. 4. 5. 6. если в этом смысле. counter operator= (const counter& );//вот это не ясно почему counter& это просто определение сигнатуры опреатора, как и определения функций в h файлах, там нет необходимости давать конкретное имя параметру, важен его тип (но это только в определении), а когда пишешь реализацию Код: plaintext 1. 2. имя &rhs должно присутствовать. В том линке, что я давал выше(всмысле в соседнем посте про массив) есть книга: Джефф Элджер, БИБЛИОТЕКА ПРОГРАММИСТА C++ - pdf, на русском, очень рекомендую. Желаю удачи! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2003, 11:51 |
|
||
|
о перегрузке операторов
|
|||
|---|---|---|---|
|
#18+
в соседнем посте = в соседнем топике ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2003, 11:52 |
|
||
|
о перегрузке операторов
|
|||
|---|---|---|---|
|
#18+
спасибо снейку! про зеньки Щас ещо вопрос о перегрузке кидану... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2003, 12:37 |
|
||
|
о перегрузке операторов
|
|||
|---|---|---|---|
|
#18+
и опять же о перегрузке вопрос один . перегружать можно ++, --, +, -, = все? иль ещо что то? вопрос два В куске делается преобразование.Целой переменной объявленной в main ()присваивается значение из объекта . вот короче. #include <iostream.h> class counter{ public: counter(); ~counter(){}; void SetVal(int x){itsVal=x;}//????????? ???????? ?????????? ??????? int GetItsVal() const {return itsVal;} operator int(); private: int itsVal; }; ////////////////////////////////////////////////////////////////////////////// counter::counter(): itsVal(0){} ///////////////////////////////////////////////////////////////////////////// counter ::operator int () {return (int(itsVal));} ///////////////////////////////////////////////////////////////////////////// //============================================================================= void main(){ counter obj1; obj1.SetVal(44); int i=obj1; cout<<"i="<<i<<endl; } результат i=44 а как перегрузить оператор = , чтобы можно было объекту присваивать значение обычной int переменной ну т.е. чтобы в main() можно сделать obj1=i ???????????????????????????? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2003, 12:47 |
|
||
|
о перегрузке операторов
|
|||
|---|---|---|---|
|
#18+
вот вроде бы так #include <iostream.h> class counter{ public: counter(); ~counter(){}; void SetVal(int x){itsVal=x;} int GetItsVal() const {return itsVal;} operator int(); operator=(int k); private: int itsVal; }; ////////////////////////////////////////////////////////////////////////////// counter::counter(): itsVal(0){} ///////////////////////////////////////////////////////////////////////////// counter ::operator int () {return (int(itsVal));} /////////////////////вот оно counter::operator = (int k) { this->SetVal(k) ;} ///////////////////////////////////////////////////////////////////////////// void main(){ counter obj1; obj1.SetVal(44); int i=obj1; cout<<"i="<<i<<endl; i=56; obj1=i; cout<<"i="<<i<<endl<<"obj1= "<<obj1.GetItsVal(); } результат i=44 i=56 obj1= 56Press any key to continue иль так криво я всё сделал? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2003, 13:13 |
|
||
|
о перегрузке операторов
|
|||
|---|---|---|---|
|
#18+
1. http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclang/html/_pluslang_overloaded_operators.asp Касаемо C# http://msdn.microsoft.com/library/default.asp?url=/library/en-us/csref/html/vclrfoverloadableoperators.asp 2. Код: plaintext 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2003, 13:56 |
|
||
|
о перегрузке операторов
|
|||
|---|---|---|---|
|
#18+
Ты, конечно, не обижайся, но хочу дать совет. Возьми Страуструпа. Там у него всё замечатлеьно написано. Задачки в конце глав даются, прорешай их. Дальше есть хорошие книги, типа "Effective C++", "More effective C++", тот же вышеупомянутый Элджер и т.д. ИМХО, так ты просто тратишь своё время..реально появятся вопросы, тогда задавай. Без обид. С уважением.:-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2003, 15:51 |
|
||
|
о перегрузке операторов
|
|||
|---|---|---|---|
|
#18+
2 фибу да я не обижаюсь! я тебя понял дай пожалуйста ссылку на Элджера в pdf ... качну однако... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2003, 16:03 |
|
||
|
о перегрузке операторов
|
|||
|---|---|---|---|
|
#18+
Конечно, родной. Только рекомендую тебе сначала проработать Страуструпа. Это основа..а остальное придёт потом. Держи линку, там куча книг:-) http://anatolix.naumen.ru/books.htm ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2003, 16:13 |
|
||
|
о перегрузке операторов
|
|||
|---|---|---|---|
|
#18+
Так ты чего предыдущее не смотрел даже, что ли? Ну тогда сначала: Книги: http://anatolix.naumen.ru/cppbooks.htm ссылку на Элджера : http://it-books.narod.ru/C_CPP/CppForRealProgrammers_rus.rar Желаю удачи! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2003, 16:49 |
|
||
|
о перегрузке операторов
|
|||
|---|---|---|---|
|
#18+
был на линках. ГЕморрой в след , кач в интрасети нашей обрублен!!! А книга Страуса (3 изд) есть на русском в обычной продаже? Я б ее через инет заказал бы! В нашей дыре все завалено абсолютно бесполезными книжками "С++ для чайников", такую прочитаешь и так что нужен мне страус... А вот на сайте CITFORUM есть материалы из книги Великого Страуса. Но я так понял там не все? vDimas или Юра! Где ВЫ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2003, 09:40 |
|
||
|
о перегрузке операторов
|
|||
|---|---|---|---|
|
#18+
Хочешь Элджера мылом? 2M ps. я не vDimas или Юра, ничего? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2003, 09:47 |
|
||
|
о перегрузке операторов
|
|||
|---|---|---|---|
|
#18+
2snake: Мне пришли, пожалуйста? fib@nekto.ru заранее благодарен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2003, 10:54 |
|
||
|
о перегрузке операторов
|
|||
|---|---|---|---|
|
#18+
снейк дай мыло твоё? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2003, 11:18 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=32294873&tid=2029303]: |
0ms |
get settings: |
10ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
184ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
| others: | 245ms |
| total: | 521ms |

| 0 / 0 |
