Titlul: Limbaj C++ Scris de: Rus Cristian din Iunie 22, 2006, 11:02:33 de ceva vreme, m-am pus pe c++, si am unele nelamuriri, nu stiu cum sa fac unele kestii, de ex:
1. nu stiu sa declar o lista simplu dublu inlantuita de ex 2. am vazut ca se pot supraincarca operatori, dar pentru asta am vazut ca trebuie declarati in diferite clase, de ex cum trebuie facuta o clasa pentru operatii pe numere mari pls...help.... Titlul: Re: Limbaj C++ Scris de: Stefan-Alexandru Filip din Iunie 22, 2006, 13:57:44 1. Pentru a declara o lista simplu inlantuita spre exemplu poti sa faci asa:
Cod: struct nod { int info; nod *urm; }; Cod: struct nod { int info; nod *prev, *urm; }; 2. Pentru o clasa de numere mari poti face asa: Cod: class Mare{ //ordinea functiilor nu conteaza, conteaza in schimb in ce categorie le pui Cod: Mare::Mare() { n = 0; memset(a, 0, sizeof(a)); } Poti afla forte multe pe de pe net, sunt un infinit de tutoriale pentru clasele din C++ si in general C++. Eu, cel putin, le-am invatat din cateva tutoriale de pe net. Google it. Titlul: Re: Limbaj C++ Scris de: Sima Mihai Cotizo -vechi din Iunie 22, 2006, 15:03:36 cat despre overloading, cum ai zis si tu, cum a zis si stefan, se poate face si fara sa fie in clasa, din cate stiu eu.
de exmplu poti sa pui Cod: long operator--(long x) Cod: Mare operator+(Mare A, Mare B) Cod: Mare Mare::operator+=(Mare A) Titlul: Re: Limbaj C++ Scris de: Bogdan-Cristian Tataroiu din Iunie 22, 2006, 15:44:04 Functia data de Stefan(Prostu) face ce face si + pe int-uri (nu +=)... adica c=a+b, nu a=a+b.. D-aia e declarata ca + si nu += :P
Faza cu supraincarcarea operatorilor de long... nu am facut-o si nici nu am de ce... Oricum ce ai zis tu acolo nu compileaza :) ce e drept, am incercat O functie operator intr-o clasa e ca orice alta functie in o clasa, doar ca apelarea lor este diferita...Cod: Mare operator+(Mare A, Mare B) O functie normala e apelata clasa.functie(parametrii); O functie operator e apelata clasa operator parametrii; Operatorul + nu primeste 2 parametrii, ci doar unul (cel din dreapta operatorului)... Operandul din stanga e cel asupra caruia se aplica operatorul... De aceea in declararea unei functii operator trebuie specificat clasa asupra caruia se poate aplica (partea cu Clasa:: ), in cazul in care declararea nu se face direct intr-o clasa. De asemenea, in cazul in care in cadrul unei functii / functii operator e nevoie de clasa asupra careia se aplica functia / operatorul se poate folosi pointerul "this"... Asta e folositor de exemplu in supraincarcarea operatorului = cand, dupa ce se modifica componenta clasei curente, se returneaza "*this". Aceasta permite apelarea unui lant de atribuiri (a = b = c) Titlul: Re: Limbaj C++ Scris de: Stefan-Alexandru Filip din Iunie 22, 2006, 15:50:48 Operatorul '+' este un operator binar.
Cod: Mare a, b, c; In cazul clasei operatorul '+' este apelat de un element, asta pentru a respecta principiul de definire a clasei, si a nu lasa pe nimeni sa se joace cu ea din exterior. De aceea e diferit de [urm exemplu] unde poti sa schimbi elementele din exterior fara nici o grija si sa te joci cu ele. Cod: struct ceva{ int a, b; }; Clasa are rolul de a garanta integritatea datelor, introducand conceptele de 'private' si 'friend'. Altfel poti sa o scrii totul la fel de usor sub forma de struct. Titlul: Re: Limbaj C++ Scris de: Sima Mihai Cotizo -vechi din Iunie 23, 2006, 07:59:19 Bun, bogdane, acum m-ai lamurit si pe mine :D ca nu stiam chestia cu "clasa operator parametrii"...
Si, pe de alta parte... Cod: struct ceva{ int a, b; }; PS: ca mi-am adus aminte, nici eu nu as face overload pe int sau pe long, dar am dat un exemplu... Titlul: Raspuns: Limbaj C++ Scris de: Rus Cristian din Iunie 23, 2006, 19:34:39 faceti-mi pls o clasa pt suma de vectori, cu functia respectiva necompletata...sa vad concret...ca nu prea am inteles...
Titlul: Re: Limbaj C++ Scris de: Stefan-Alexandru Filip din Iunie 23, 2006, 21:44:55 :-k :eyebrow:
As you wish... Cod: class Mare{ Titlul: Raspuns: Limbaj C++ Scris de: nash_mit din Iunie 24, 2006, 08:32:44 http://www.cwu.edu/~andonie/Cartea%20de%20algoritmi/cap2.htm#c2 (http://www.cwu.edu/~andonie/Cartea%20de%20algoritmi/cap2.htm#c2)
Citeste asta ... te ajuta sa iti dai seama ce si cum ... dupa ce ti-ai dat seama despre ce este vb o sa vezi ca nu este mare filosofie .... |