[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

ntu-kpi.comp.programming

×ÏÐÒÏÓ ÐÏ ÐÒÏÜËÔÉÒÏ×ÁÎÉÀ ïïð-ÓÉÓÔÅÍÙ

AxA

5/1/2005 12:10:00 PM

ðÒÉ×ÅÔ, ×ÓÅÚÎÁÀÛÉÊ ÏÌÌ.

ðÏÍÏÇÉÔÅ ÎÏ×ÉÞËÕ × ïïð × ÔÁËÏÍ ×ÏÐÒÏÓÅ.
ÅÓÔØ Ä×Á ËÌÁÓÓÁ, ÎÁÚÏ×ÅÍ ÉÈ A É B.
ÏÔ ÎÉÈ ÍÎÏÖÅÓÔ×ÅÎÎÙÍ ÎÁÓÌÅÄÏ×ÁÎÉÅÍ ÎÁÓÌÅÄÕÅÔØÓÑ ËÌÁÓ C.
ÕËÁÚÁÔÅÌÀ ÎÁ ËÌÁÓ A ÉÌÉ B ÍÏÖÅÔ ÐÒÉÓ×ÁÉ×ÁÔØÓÑ ÕËÁÚÁÔÅÌØ, ÕËÁÚÙ×ÁÀÝÉÊ ÎÁ
ÓÁÍÏÍ ÄÅÌÅ ÎÁ ÏÂßÅËÔ ËÌÁÓÓÁ C.

C obj;
A *ptr1= &obj;
B *ptr2= &obj;

×ÎÉÍÁÎÉÅ ×ÏÐÒÏÓ :))
ÅÓÌÉ Õ ÍÅÎÑ ÅÓÔØ ÕËÁÚÁÔÅÌØ, ÓËÁÖÅÍ A *ptr;
Ñ ÔÏÞÎÏ ÚÎÁÀ, ÞÔÏ ÏÎ ÎÁ ÓÁÍÏÍ ÄÅÌÅ ÕËÁÚÙ×ÁÅÔ ÎÁ ÏÂßÅËÔ ËÌÁÓÓÁ ó.
ËÁË ÐÒÁ×ÉÌØÎÏ × ó++ ÅÇÏ ÐÒÅÏÂÒÁÚÏ×ÁÔØ × ÕËÁÚÁÔÅÌØ ÎÁ ËÌÁÓÓ ÔÉÐÁ B.

ÐÒÑÍÏÅ ÐÒÉÓ×ÁÉ×ÁÎÉÅ, ÅÓÓÔÅÓÔ×ÅÎÎÏ ÎÅ ÒÁÂÏÁÔÅÔ
B *tmp = ptr; // ???

ÚÁÒÁÎÅÅ ÓÐÁÓÉÂÏ

15 Answers

AxA

5/1/2005 1:33:00 PM

0

ÚÁÂÙÌ ÓËÁÚÁÔØ ÓÁÍÏÅ ×ÁÖÎÏÅ :))
ÔÁËÉÈ ËÌÁÓÓÏ× C, ÕÎÁÓÌÅÄÏ×ÁÎÎ¦È ÏÔ A É B Õ ÍÅÎÑ ÍÎÏÇÏ, É ÎÁ ËÁËÏÊ ÉÍÅÎÎÏ
ÕËÁÚÙ×ÁÅÔ ÕËÁÚÁÔÅÌØ Ñ ÎÅ ÚÎÁÀ, ÐÏÜÔÏÍÕ ÐÒÅÏÂÒÁÚÏ×ÁÎÅÉ Ë ÔÉÐÕ ó Á ÐÏÔÏÍ B ÎÅ
ÐÒÅÄÌÁÇÁÔØ

Domanser

5/2/2005 9:24:00 PM

0

> ÔÁËÉÈ ËÌÁÓÓÏ× C, ÕÎÁÓÌÅÄÏ×ÁÎÎ¦È ÏÔ A É B Õ ÍÅÎÑ ÍÎÏÇÏ, É ÎÁ ËÁËÏÊ ÉÍÅÎÎÏ
> ÕËÁÚÙ×ÁÅÔ ÕËÁÚÁÔÅÌØ Ñ ÎÅ ÚÎÁÀ, ÐÏÜÔÏÍÕ ÐÒÅÏÂÒÁÚÏ×ÁÎÅÉ Ë ÔÉÐÕ ó Á ÐÏÔÏÍ B
ÎÅ
> ÐÒÅÄÌÁÇÁÔØ

B* tmp = dynamic_cast<B*>(ptr);



Marchello

5/4/2005 4:52:00 PM

0

> B* tmp = dynamic_cast<B*>(ptr);

á ÐÏÞÅÍÕ ÉÍÅÎÎÏ dynamic_cast ?

íÏÖÅÔ ÌÕÞÛÅ reinterpret_cast ?

(ÎÕ ËÏÎÅÞÎÏ ÜÔÏ ÎÕÖÎÏ ×ÉÄÅÔØ ÈÏÔÑ ÂÙ ÏÂßÑ×ÌÅÎÉÑ ËÌÁÓÓÏ×).

Anton N. Breusov

5/4/2005 5:50:00 PM

0

Konnichi wa, goblin <axa@ussr.ntu-kpi.kiev.ua>:
> AOIE O IAIN AOOO OEAUAOAIO, OEAOAI A *ptr;
> N OI?II UIAA, ?OI II IA OAIII AAIA OEAUU?AAO IA IA?AEO EIAOOA o.
> EAE ?OA?EIOII ? o++ ACI ?OAIAOAUI?AOO ? OEAUAOAIO IA EIAOO OE?A B.
o OAAN OEIOAA ?OACI EAEEA-OI IUEAEE EIAIII ? ?OIAEOEOI?AIEE, IA ?OIAI?AI
OAAIAOO OAE, ?OIAU UOA IAIAEIAEIIOOO ?IIAYA IO?AIA?

--
Anton N. Breusov 'Antonz'.
Easy come, easy go...

AxA

5/4/2005 6:00:00 PM

0

ÐÏ-ÍÏÊÍÕ ÔÙ ÎÅÐÒÁ×ÉÌØÎÏ ÍÅÎÑ ÐÏÎÑÌ...
ËÌÁÓÓÙ á É â ÏÎÉ ÎÉËÁË ÎÅ Ó×ÑÚÁÎÙ ÎÁÓÌÅÄÏ×ÁÎÉÅÍ ÍÅÖÄÕ ÓÏÂÏÊ.
ÅÄÉÎÓÔ×ÅÎÎÏÅ ÞÔÏ - ÏÔ ÎÉÈ ÏÂÏÉÈ ÎÁÓÌÅÄÕÅÔØÓÑ ËÌÁÓÓ ó.
ÐÏÜÔÏÍÕ ÄÉÎÁÍÉË ËÁÓÔ ÎÅÐÒÉÍÅÎÉÍ
ËÏÒÏÞÅ ×ÏÔ Ñ ÐÏÐÒÏÂÏ×ÁÌ Ô×ÏÊ ÓÏ×ÅÔ - ÐÏÓÍÏÔÒÉ ÓÁÍ - ÏÎÏ ÎÅ ËÏÍÐÉÌÉÔØÓÑ

#include <stdio.h>
class A
{
virtual void f()=0;
};

class B
{
virtual void f()=0;
};

class C:public A, public B
{
virtual void f(){}
};

main()
{
A *ptr=new C;
B *prt2=dynamic_cast<B *>(ptr);

if (ptr2==NULL)
{
ptr2=NULL;
} else
{
ptr2=ptr2;
}
}


goblin

5/4/2005 6:16:00 PM

0

ÎÕ ÜÔÏ ÐÒÉÎÃÉÐÉÁÌØÎÙÊ ×ÏÐÒÏÓ - ËÏÎÅÞÎÏ ÄÕÍÁÌ
ÎÕ Á ×ÓÅ-ÔÁËÉ ÉÎÔÅÒÅÓÎÏ, ÎÅÕÖÅÌÉ × ó++ ÜÔÁ ×ÏÚÍÏÖÎÏÓÔØ ÏÔÓÕÔÓÔ×ÕÅÔ?

goblin

5/4/2005 6:17:00 PM

0

reinterpret ÎÅÌØÚÑ
Ñ ÔÁË ÐÏÐÒÏÂÏ×ÁÌ, É ÐÏÔÏÍ ÐÏÌÞÁÓÁ ÒÁÚÂÉÒÁÌÓÑ, ÐÏÞÅÍÕ Õ ÍÅÎÑ 2*2 ÄÁÅÔ sqrt
domain error :)))))

goblin

5/4/2005 6:18:00 PM

0

reinterpret ÎÅÌØÚÑ
Ñ ÔÁË ÐÏÐÒÏÂÏ×ÁÌ, É ÐÏÔÏÍ ÐÏÌÞÁÓÁ ÒÁÚÂÉÒÁÌÓÑ, ÐÏÞÅÍÕ Õ ÍÅÎÑ 2*2 ÄÁÅÔ sqrt
domain error :)))))

Marchello

5/4/2005 7:31:00 PM

0

> ÎÕ ÜÔÏ ÐÒÉÎÃÉÐÉÁÌØÎÙÊ ×ÏÐÒÏÓ - ËÏÎÅÞÎÏ ÄÕÍÁÌ
> ÎÕ Á ×ÓÅ-ÔÁËÉ ÉÎÔÅÒÅÓÎÏ, ÎÅÕÖÅÌÉ × ó++ ÜÔÁ ×ÏÚÍÏÖÎÏÓÔØ ÏÔÓÕÔÓÔ×ÕÅÔ?

îÕ Ó ÄÒÕÇÏÊ ÓÔÏÒÏÎÙ, ËÁË ÔÙ É ÇÏ×ÏÒÉÛØ, ÞÔÏ A É B ÎÅ ÉÍÅÀÔ
ÎÉÞÅÇÏ ÏÂÝÅÇÏ; ÔÏ ÔÁËÁÑ ÏÐÅÒÁÃÉÑ ×ÙÚÙ×ÁÅÔ ÓÏÍÎÅÎÉÅ.

üÔÏ ÅÝÅ ÈÏÒÏÛÏ ÅÓÌÉ:

class A
{
virtual void f()=0;
};

class B
{
virtual void f()=0;
};

á ÅÓÌÉ ËÌÁÓÓ ÷ ÂÕÄÅÔ ÉÍÅÔØ ÎÁ ÔÒÉ ÄÅÓÑÔËÁ ÂÏÌØÛÅ ÆÕÎËÃÉÊ, ÔÏ
ËÁË ÅÇÏ ÐÒÉ×ÏÄÉÔØ Ë á (ÉÌÉ ÎÁÏÂÏÒÏÔ) ?

goblin

5/4/2005 8:35:00 PM

0

> á ÅÓÌÉ ËÌÁÓÓ ÷ ÂÕÄÅÔ ÉÍÅÔØ ÎÁ ÔÒÉ ÄÅÓÑÔËÁ ÂÏÌØÛÅ ÆÕÎËÃÉÊ, ÔÏ
> ËÁË ÅÇÏ ÐÒÉ×ÏÄÉÔØ Ë á (ÉÌÉ ÎÁÏÂÏÒÏÔ) ?

Á ËÁËÁÑ ÒÁÚÎÉÃÁ ÓËÏÌØËÏ Õ ÎÉÈ ÆÕÎËÃÉÊ?
×ÅÄØ ó ÎÁÓÌÅÄÕÅÔØÓÑ ËÁË ÉÚ á, ÔÁË É ÉÚ B, ÔÁË ÞÔÏ ÕËÁÚÁÔÅÌØ ÎÁ ÏÂßÅËÔ ËÌÁÓÓÁ
ó ÍÏÖÅÔ ÂÙÔØ ÐÒÉÓ×ÏÅÎ ÕËÁÚÁÔÅÌÑÍ ËÁË ËÌÁÓÓÁ A ÔÁË É B.
×ÏÔ É ×ÓÅ.
ÎÏ ÅÓÌÉ Õ ÍÅÎÑ ÕÖÅ ÅÓÔØ ÕËÁÚÁÔÅÌØ ÔÉÐÁ á, ÎÏ ÕËÁÚÙ×ÁÀÝÉÊ ÎÁ ÏÂßÅËÔ ó, ÔÏ ËÁË
ÅÇÏ ÐÒÉ×ÅÓÔÉ Ë ÔÉÐÕ ÏÂßÅËÔÁ B.
ÐÏÉÄÅÅ ÜÔÏ ÐÒÏÓÔÏ ×ÏÐÒÏÓ ÓÉÎÔÁËÓÉÓÁ ó++.