Builder.cz - Informacni server o programovani

Odběr fotomagazínu

Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!

 

Zadejte Vaši e-mailovou adresu:

Kamarád fotí rád?

Přihlas ho k odběru fotomagazínu!

 

Zadejte e-mailovou adresu kamaráda:

Soutěž

Sponzorem soutěže je:

IDIF – vaše škola fotografie

 

Kdo lektoruje pražský letní workshop v ZOO a Botanické zahradě?

V dnešní soutěži hrajeme o:

Dárkový certifikát v hodnotě 1000 Kč



Zapis prirazeni hodnoty promene

Seznam témat     Nová odpověď

Přihlásit se     Registrace     Zapomenuté heslo

 

Vložit nový příspěvek

Jméno:

Předmět:

Příspěvek:

*AGGRESSIVE* O:-) :-/ :-P *BLUSH* *BYE* :'( *DASH* 8-) *DRINK* :-| *THUMBUP* *SOS* *KISSED* :-* *OK* *SECRET* *STOP*

Pohlaví:

Muž, Žena

Kontrola:

Do spodního pole opište z obrázku 5 znaků:

Kód pro ověření

 

 

 

Re: Zapis prirazeni hodnoty promene

Autor: mol

22:46:36 03.05.2011

Implicitním konstruktorem se v C++ myslí konstruktor, který lze použít automaticky ke konverzi. Tzn. je jednoparametrický a parametrem je nějaký jiný typ. V tomto případě tedy int. V zadané situaci se použije v obou případech, rozdíl je v tom, že v první situaci musí existovat, ale může být i explicitní a použije ho překladač stejně, ve druhém případě musí buď existovat operator=(int) nebo tento implicitni konstruktor a operator=(const Object&), ten si ale překladač umí vygenerovat. Kdyby parametrem navíc nebyl int, ale nějaká třída, tak by ještě úlohu mohly sehrát přetypovací operátory.

Ten popis je tak nesrozumitelnej, že bych radši doporučil si zkusit pohrát s následujícím příkladem -- odkomentovat/zakomentovat slovo explicit, odkomentovat/zakomentovat řádek začínající // a zkusit pochopit, co to dělá

[code][color=green]#include[/color]
[color=green]#include[/color]

[bold]using[/bold] [bold]namespace[/bold] std;

[bold]class[/bold] Trida1 {
[bold]public[/bold]:
Trida1() { cout << [color=red]"Bezparametricky konstruktor"[/color] << endl; }
[color=blue]/*[bold]explicit[/bold]*/[/color] Trida1([bold]int[/bold] x) { cout << [color=red]"Konstuktor s parametrem "[/color] << x << endl; }
[color=blue]// Trida1& [bold]operator[/bold]=([bold]int[/bold] x) { cout << "Prirazovaci [bold]operator[/bold] " << x << endl; [bold]return[/bold] *[bold]this[/bold]; }[/color]
Trida1& [bold]operator[/bold]=([bold]const[/bold] Trida1&) { cout << [color=red]"Prirazovaci [bold]operator[/bold] [bold]const[/bold] Trida1&"[/color] << endl; [bold]return[/bold] *[bold]this[/bold]; }
};

[bold]class[/bold] Trida2 {
Trida1 a;
[bold]public[/bold]:
Trida2() : a(4) {}
};

[bold]class[/bold] Trida3 {
Trida1 a;
[bold]public[/bold]:
Trida3() { a = 3; }
};

[bold]int[/bold] main([bold]int[/bold] argc, [bold]char[/bold] *argv[])
{
cout << [color=red]"Prvni"[/color] << endl;
Trida2 t2;
cout << [color=red]"Druhy"[/color] << endl;
Trida3 t3;
system([color=red]"PAUSE"[/color]);
[bold]return[/bold] EXIT_SUCCESS;
}
[/code]

Citovat příspěvek

 

Re: Zapis prirazeni hodnoty promene

Autor: Straposs

21:02:02 03.05.2011

Díky, souvisí to nějak s implicitním konstruktorem? V kterém případě se (ne)volá?

Citovat příspěvek

 

Re: Zapis prirazeni hodnoty promene

Autor: mol

15:58:20 03.05.2011

Object::metoda(int x):value(x){}
neexistuje. Takova syntaxe se da pouzit jen u konstruktoru pro predani hodnoty konstruktoru clenske promenne (nebo predani parametru konstruktoru predka). Rozdil je pak jasny: v prvnim priklade se pouzije pro value konstruktor s danym paramentrem; ve druhem se value nejdriv vytvori bezparametrickym konstruktorem a pak se pouzije operator prirazeni.

> ------------ Původní zpráva ------------
> Od: Straposs
> Předmět: Zapis prirazeni hodnoty promene [123|3322203]
> Datum: 03.5.2011 15:37:34
> ----------------------------------------
>
>
> Ahoj, můžete mi prosím vysvětlit rozdíl mezi zápisem
> Object::metoda(int x):value(x){}
> a Object::metoda(int x){value = x;}
>
> Diky
> --
> Autor: Straposs
> Forum: C/C++
> Odkaz: http://forum.builder.cz/read.php?123,3322203,3322203#msg-3322203
>
>
>

Příspěvek zaslán emailem

Citovat příspěvek

 

Zapis prirazeni hodnoty promene

Autor: Straposs

15:37:25 03.05.2011

Ahoj, můžete mi prosím vysvětlit rozdíl mezi zápisem
Object::metoda(int x):value(x){}
a Object::metoda(int x){value = x;}

Diky

Citovat příspěvek

 

 

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: