Ïîìîãíè íè äà íàïðàâèì Uroci.net ïî - áîãàò! Äîáàâè óðîê
Êàòåãîðèè Äðóãè óðîöè Adobe Photoshop Adobe Illustrator Adobe Flash Adobe Fireworks DreamWeaver CSS è HTML Corel Draw Image Ready PHP SEO CMS Microsoft Windows Microsoft Word Microsoft Excel PowerPoint Microsoft Access Microsoft Publisher Linux Visual basic JavaScript Ajax 3ds Max Maya 3D C++
C++
Sound Forge Gimp SWiSH

C++ ÷àñò.8 (Îáåêòíî-îðèåíòèðàíî)

C++ » C++
fix3d   òðóäíîñò:    âèäÿí: 8036



Ïðè êîìïèëàöèÿ è èçïúëíåíèå ñå ïîëó÷àâà ñëåäíîòî:

Invokation by a ZooAnimal object:
ZooAnimal name: circusZooAnimal
Invokation by a Bear object: ZooAnimal
name: cartoon Bear
scientific name: ursus cartoonus Zoo
Area Location:NorthWest:
B1: area BroWn
Invokation by a Panda object: ZooAnimal
name: Giant Panda
scientific name: Ailuropoda Melaoleucawe
call our friend: Yin YangZoo
Area Location:NorthWest: B1.P:
area BrownSpotsRoom Location: 1001

Ñëåäâàùèÿò ïðèìåð ïîêàçâà ðàáîòà äèðåêòíî ñ óêàçàòåëè êúì îáåêòè. Òîé âèêà âèðòóàëíàòà ôóíêöèÿ isA().

#include <stream.h>
#include "ZooANimal.h"
#include "Bear.h"
#include "Panda.h"

ZooAnimal circus( "circusZooAnimal" );
Bear yogi("cartoon Bear", BEAR, "ursus cartoonus");
Panda yinYang("Yin Yang", 1001, "Giant Panda");

main() {
ZooAnimal *pz;
pz = &circus;
cout << "virtual: ZooAnimal::isA():n";
pz->isA( cout );
pz = &yogi;cout << "nvirtual: Bear::isA():n";
pz->isA( cout );pz = &yinYang;
cout << "nvirtual: Panda::isA():n";
pz->isA( cout );
}

Ïðè êîìïèëàöèÿ è èçïúëíåíèå ñå ïîëó÷àâà ñëåäíîòî:

virtual: ZooAnimal::isA():
ZooAnimal name: circusZooAnimal
virtual: Bear::isA():
ZooAnimal name: cartoon Bear
scientific name: ursus cartoonus
virtual: Panda::isA():
ZooAnimal name: Giant Panda
scientific name: Ailuropoda Melaoleuca
we call our friend: Yin Yang

 ñëåäâàùèÿ ïðèìåð äåéñòâèòåëíèÿò òèï íà êëàñà, àäðåñèðàí ÷ðåç pz ñå ðàçïîçíàâà ïî âðåìå íà êîìïèëàöèÿ. Íåêà îñòàâèì âèðòóàëíèÿ ìåõàíèçúì è äà èçâèêàìå âñÿêà ôóíêöèÿ ñòàòè÷íî:

#include <stream.h>
#include "ZooAnimal.h"
#include "Bear.h"
#include "Panda.h"

ZooAnimal circus( "circusZooAnimal");
Bear yogi("cartoon Bear", BEAR, "ursus cartoonus");
Panda yinYang("Yin Yang", 1001, "Giant Panda");

main() {
ZooAnimal *pz = &yinYang;
cout << "Nonvirtual invokation of Panda::isA():n";
((Panda*)pz) ->Panda::isA( cout );
pz = &yogi;
cout << "nNonvirtual invokation of Bear::isA():n";
((Bear*)pz) ->Bear::isA( cout );
}

Íå âèðòóàëíîòî èçâèêâàíå íà Panda::isA() ÷ðåç óêàçàòåë êúì ZooAnimal èçèñêâà ÿâíî îáðúùåíèå. ZooAnimal íÿìà ïðåäñòàâà çà ñëåäâàùèòå èçâëè÷àíèÿ îò êëàñà Panda; òîâà å ÷àñò îò âèðòóàëíèÿ ìåõàíèçúì, à íå ÷àñò îò ñàìèÿ áàçîâ êëàñ. Ïðè êîìïèëàöèÿ è èçïúëíåíèå ñå ïîëó÷àâà ñëåäíîòî:

Nonvirtual invocation of Panda::isA():
ZooAnimal name: Giant Panda
scientific name: Ailoropoda Melaoleucawe
call our friend: Yin Yang
Nonvirtual invocation of Bear::isA():
ZooAnimal name: cartoon Bear
scientific name: ursuss cartoonus

Òîçè ïîñëåäåí ïðèìåð îòïå÷àòâà ñìåñåí ñïèñúê îò óêàçàòåëè êúì ZooAnimal. Òîé å ðåàëèçèðàí ñ èçïîëçâàíåòî íà ñëåäíàòà íå ÷ëåí ôóíêöèÿ print() - print() òðÿáâà äà èìà äîñòúï äî ÷ëåíîâåòå äàííè íà ZooAnimal, êîèòî íå ñà public, çàòîâà òðÿáâà äà áúäå îáÿâåíà êàòî friend çà ZooAnimal.

#include <iostream.h>
#include "ZooAnimal.h"

void print( ZooAnimal *pz, ostream &os = cout ) {
while( pz )
{
pz->print( os );
os << "n";
pz = pz->next;
}

Çà íàøèÿ ïðîãðàìåí ïðèìåð èìàìå íóæäà îò óêàçàòåë êúì ZooAnimal, êîéòî äà ñëóæè êàòî ãëàâà íà ñâúðçàíèÿ ñïèñúê:

ZooAnimal *headPptr = 0;

main() äåôèíèðàìå ïî ñëåäíèÿ íà÷èí:

#include <stream.h>
#include "ZooAnimal.h"
extern ZooAnimal makeList( ZooAnimal );
ZooAnimal *headPtr = 0;

main()
{ cout << "A Program to Illustrate Virtual Functionsn";
headPtr = makeList( headPtr );
print( headPtr );
}

makeList(), íà ñâîé ðåä, å äåôèíèðàíà ïî ñëåäíèÿ íà÷èí:

#include <stream.h>
#include "ZooAnimal.h"
#include "Bear.h"
#include "Panda.h"

ZooAnimal circus( "circusZooAnimal" );
Bear yogi("cartoon Bear",BEAR,"ursus cartoonus");
Panda yinYang("Yin Yang",1001,"Giant Panda");
Panda rocky("Rocky",943,"Red Panda","Ailurus fulgens");
ZooAnimal *makeList( ZooAnimal *ptr )
{// for simplicity, hand code list
ptr = &yinYang;ptr->link( &circus );
ptr->link( &yogi );
ptr->link( &rocky );
return ptr;
}


Ñòðàíèöè: «1 2 3 4 5 6 7 »

Ðåãèñòðèðàéòå ñå, çà äà äîáàâèòå êîìåíòàð

ðåêëàìà

© Âñè÷êè ïðàâà çàïàçåíè. 2006-2008. Created by: Site.bg
Ïðåïîðú÷âàìå: IT Íîâèíè | Êèíî è èãðè | Äèïëîìà.áã | Paparak.bg | Òóíèíã Ïîðòàë | uchenik.com | TRAVEL òóðèçúì | Ðåôåðàòè | AmAm.bg | Èäå.ëè | Êóðñîâè ðàáîòè | AnimeS-bg.com | Ôîòî Ôîðóì | Çàïîçíàíñòâà | Ìðåæà îò ïðèÿòåëè | IT Light | Spodeli.net | Ôîòî-Êóëò | IDG.BG | Teenproblem.net | Áëîã - Îáðàçîâàíèå | Fresh-BG.com | Hanovete.com | Bulfleet.com | Mythlands.com | Ohoboho.com | Êàçàíëúê.Com | News24 | Setcom.bg | Atol.bg | Elmaz.com | MobileBulgaria.com