Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Rename SQL column

Achiziționare tuner TV !

Din ce este facuta terasa asta?

Cum accesez site-ul CNAS ?
 Algoritm simplu de calculare al u...

Bitdefender Total Security ș...

casa verde 2024

Intrerupator cu N - doza doar cu ...
 Incalzire casa fara gaz/lemne

Incalzire in pardoseala etapizata

Suprataxa card energie?!

Cum era nivelul de trai cam din a...
 probleme cu ochelarii

Impozite pe proprietati de anul v...

teava rezistenta panou apa calda

Acces in Curte din Drum National
 

Constructor implicit?

- - - - -
  • Please log in to reply
9 replies to this topic

#1
bluething

bluething

    Member

  • Grup: Members
  • Posts: 611
  • Înscris: 14.09.2010
Salutare tuturor.

Imi poate explica cineva ce este mai exact un constructor implicit? Deoarece aparent atat pe internet cat in diverse carti, parerile sunt impartite in doua tabere: fie e constructorul creat de compilator atunci cand programatorul nu a definit unul, fie este definit de programator cu argumente implicite, de genul (exemplu dintr-o carte):


class Persoana{

private: char nume[40]; long int telefon;
public: Persoana(char *n="Numele", long int t=1432);

}

#2
sergiu_spooky

sergiu_spooky

    Senior Member

  • Grup: Senior Members
  • Posts: 3,738
  • Înscris: 23.06.2006
In ce limbaj? C++?
Deaia nu inveti programare din carti in romana.
Exista conceptul de "default constructor" si "implicit constructor", care pun pariu ca nu sunt traduse corect in romana.

Ala cu parametrii fix proprietatile private definite inainte nu are niciun nume special.

Edit: termenul de constructor implicit poate si el sa fie confundat cu ideea de "implicit constructor call", adica presupunand ca ai si un default constructor (ala fara parametrii) poti spune "Persoana p;" care e tot una cu "Persoana p();".

Edited by sergiu_spooky, 03 August 2015 - 17:05.


#3
bluething

bluething

    Member

  • Grup: Members
  • Posts: 611
  • Înscris: 14.09.2010
Pentru C++ e cartea facuta, da.

In cartea din care am dat exemplul sunt listate urmatoarele tipuri de constructori:
- implicit (fara argumente sau argumente implicite)
- de copiere
- de conversie
- general

Problema e ca nu explica prea pe larg, iar eu din cunostiintele mele stiu ca implicit se refera la cel furnizat de compilator, indiferent ca vorbim de constructor, destructor, etc.

Edited by bluething, 03 August 2015 - 17:08.


#4
potae

potae

    Sorosist frumos si liber

  • Grup: Senior Members
  • Posts: 3,429
  • Înscris: 20.08.2013
am clasa:
class Persoana {
	  private:
		 string nume;
	  public:
		 Persoana() {
		 nume = "Gigel";
		 }

		 string getPersoana() {
			   retun this.nume;
		 }
}

Persoana p = new Persoana(); sau ma rog Persoana p;
Daca dupa faci p.getNume(); ar trebui sa iti arate gigel. Ca ai setat IMPLICIT (default) ca numele sa fie gigel atunci cand instantiezi un obiect fara sa-i dai parametri.

Nu mai stiu C++, posibil sa fi incurcat sintaxa cu cea de java dar sper ca intelegi ideea.

#5
sergiu_spooky

sergiu_spooky

    Senior Member

  • Grup: Senior Members
  • Posts: 3,738
  • Înscris: 23.06.2006
No, lucrurile _in engleza_ sunt cam asa:

- default constructor: orice constructor pe care-l poti apela fara argumente. Adica si unul care are default values pentru parametrii;
- implicit constructor: un default constructor definit automat (implicit) de complilator daca nu ai definit tu (programatorul) unul;
- copy-initialization (constructor "de copiere"): Test t2 = t1; unde t1 e tot instanta de Test;
- converting constructor: orice constructor care primeste un parametru. Stiu, cam generala definitia Posted Image) Ideea e ca ai Test(int i) pe care-l folosesti ca Test t = Test(3); care inseamna ca ai "convertit" 3 din int in Test. Constructorul "de copiere" e si el un converting constructor, care converteste dintr-un tip in acelasi tip Posted Image

Repet, nu mai invata programare in romana. E o greseala. In primul rand pentru ca toata documentatia _relevanta_ de pe internet e in engleza. In al doilea rand pentru ca, la randul lor, si aia care-or scris cartile in romana pana la urma le-or tradus din engleza. Fie direct (plagiat) fie indirect (or invatat in engleza si 10 ani mai tarziu incearca sa exprime ideile din mintea lor in romana). Si o fac foarte prost.
Daca scrie pe undeva in cartea aia a ta "argumente implicite" atunci opreste-te :)) Nu exista asa ceva. Exista default arguments. Default nu e tot una cu implicit in engleza.

Edited by sergiu_spooky, 03 August 2015 - 17:26.


#6
bluething

bluething

    Member

  • Grup: Members
  • Posts: 611
  • Înscris: 14.09.2010
Am inteles, multumesc frumos.

#7
bluething

bluething

    Member

  • Grup: Members
  • Posts: 611
  • Înscris: 14.09.2010
Daca tot suntem in tema aici; o alta nelamurire pe care o am este legata de lista de instantiere/initializare. La fel, nu inteleg daca-s la fel, daca sunt diferite, daca da, care-i diferenta. Din ce am citit in engleza nu pare sa fie diferente intre cele doua, in romana n-am gasit mare branza, iar cartea asta le trateaza diferit. Spune si citez: "Listele de initializare: aceasta metoda utilizeaza listele de instantiere (tratate anterior). O lista de instantiere (sau initializare) a membrilor unui obiect contine o lista a membrilor ce urmeaza a fi initializati si apare blablabla". Pai ori "utilizeaza listele de instantiere" ori e una si aceleeasi.

Imi pare rau pt. double post, nu pot edita ultimul post.

Edited by bluething, 03 August 2015 - 18:21.


#8
sergiu_spooky

sergiu_spooky

    Senior Member

  • Grup: Senior Members
  • Posts: 3,738
  • Înscris: 23.06.2006
Pai e o diferenta cam mare intre instantiere si initializare.
Obiectele in C++ sunt instante ale unor clase.
Initializarea are de-a face cu valorile initiale ale membrilor unei clase.
Exista mai multe motive, practice si de performanta pentru care vrei sa folosesti listele de initializare.

Asadar obiectele sunt instantiate, variabilele sunt initializate, membrii unei clase pot fi initializati folosind o lista de initializare.
Nu exista "lista de instantiere". E o prostie.

Mai spun o data, poate intelegi: NU mai invata din cartea aia.

Edited by sergiu_spooky, 04 August 2015 - 10:02.


#9
bluething

bluething

    Member

  • Grup: Members
  • Posts: 611
  • Înscris: 14.09.2010
M-ai lamurit. Multumesc inca odata pentru ajutor!

Treaba cu listele era in carte inaintea constructorilor, nu am mai continuat si nu o sa mai continui sa invat dupa ea. Voi cauta pe internet. Posted Image

#10
Zyx

Zyx

    Active Member

  • Grup: Members
  • Posts: 1,542
  • Înscris: 14.02.2005
C++ Primer 5th Edition o gasesti in fisiere listate

Anunturi

Bun venit pe Forumul Softpedia!

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate