Ïîìîãíè íè äà íàïðàâèì 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

Ñ++ ÷àñò.2 (Òèïîâå äàííè)

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



2.8. Òèï êëàñ

Òèïúò êëàñ å åäèí äåôèíèðàí îò ïîòðåáèòåëÿ äàííîâ òèï, êîéòî ïðåäñòàâëÿâà ñúâêóïíîñò îò èìåíóâàíè åëåìåíòè îò äàííè, ìîæå è ðàçíîòèïíè, êàêòî è ìíîæåñòâî îò îïåðàöèè, ïðîåêòèðàíè äà îáðàáîòâàò òåçè äàííè. Îáèêíîâåíî, åäèí êëàñ ñå èçïîëçóâà çà âúâåæäàíå íà íîâ òèï äàííè â ïðîãðàìàòà; äîáðå ïðîåêòèðàíèÿò êëàñ ìîæå äà áúäå èçïîëçâàí òîëêîâà ëåñíî, êîëêîòî è êîéòî è äà å äðóã ïðåäâàðèòåëíî äåôèíèðàí òèï äàííè. Êëàñîâåòå ñå ðàçãëåæäàò ïîäðîáíî â ãëàâè îò 5 äî 8. Ïîíåæå òå ïðåäñòàâëÿâàò ôóíäàìåíòàëíà êîíöåïöèÿ çà Ñ++ â òîçè ðàçäåë ñå äàâàò îáÿñíåíèÿçà òÿõ íà îñíîâàòà íà åäèí îáøèðåí ïðèìåð -ïðîåêòèðàíåòî íà êëàñà íà öåëèòå ìàñèâè.

×åòèðè îò íàé-íåïðèÿòíèòå àñïåêòè íà ïðåäâàðèòåëíî äåôèíèðàíèÿ òèï ìàñèâ ñà:

1. Ðàçìåðúò íà ìàñèâà òðÿáâà äà áúäå êîíñòàíòåí èçðàç. Ïðîãðàìèñòúò, îáà÷å, íå âèíàãè çíàå ïî âðåìå íà êîìïèëàöèÿ êîëêî ãîëÿì ìàñèâ ìó å íåîáõîäèì. Åäèí ïî ãúâêàâ òèï ìàñèâ áè ðàçðåøèë íà ïðîãðàìèñòà äà îïðåäåëÿ èëè ïðîìåíÿ ðàçìåðíîñòòà íà ìàñèâà ïî âðåìå íà èçïúëíåíèå íà ïðîãðàìàòà.

2. Íå ñúùåñòâóâà ïðîâåðêà äàëè èíäåêñúò íà ìàñèâà íàäõâúðëÿ ðàçìåðà ìó. Ñëåäâàùèÿò ïðîãðàìåí ôðàãìåíò, íàïðèìåð, èçïîëçóâà ãðåøíà êîíñòàíòà çà îãðàíè÷èòåë íà ãîðíàòà ãðàíèöà íà ìàñèâ ïðè èíèöèàëèçàöèÿòà ìó. Âúïðåêè, ÷å ïðîãðàìàòà ïðèêëþ÷âà óñïåøíî, ðåçóëòàòèòå âåðîÿòíî ùå áúäàò íåïðàâèëíè ïîðàäè èçìåíåíèåòî íà ïàìåòòà èçâúí ãðàíèöèòå íà ìàñèâà.

const int SIZE = 25;
const int SZ = 10;
int ia[ SZ ];
// ...

main() {
// not caugth during program execution
for ( int i = 0; i < SIZE; ++i )
ia[ i ] = i;
// ...}

3. Êîãàòî ìàñèâ ñå èçïðàùà êàòî ïàðàìåòúð íà ôóíêöèÿ å íåîáõîäèìî äà ñå óêàçâà è ðàçìåðà ìó. Ìàñèâèòå - àðãóìåíòè áèõà ìîãëè äà áúäàò èçïîëçóâàíè ïî-ëåñíî àêî ðàçìåðà èì å èçâåñòåí.

4. Áè áèëî äîáðå äà ìîæåì äà êîïèðàìå åäèí ìàñèâ â äðóã êàòî èçïîëçóâàìå ñàìî åäèí îïåðàòîð. Íàïðèìåð:

int ia[ SZ ];
int ia2[ SZ ] = ia; // not supported

 òîçè ðàçäåë ñå äåôèíèðà êëàñ, êîéòî ïîääúðæà òåçè ÷åòèðè äîïúëíèòåëíè ñâîéñòâà íà ìàñèâ. Îñâåí òîâà ñèíòàêñèñúò çà èçïîëçâàíå íà îáåêòèòå îò êëàñ ìàñèâ ùå áúäå òîëêîâà ïðîñò, êîëêîòî è íà òðàäèöèîííèÿ ìàñèâ. Ïðîåêòèðàíåòî íà òèïà êëàñ ñå îáñúæäà ïîäðîáíî â ãëàâà 1. Òóê íèå ïðîñòî ùå ïðåäñòàâèì äåôèíèöèÿòà íà êëàñà ìàñèâ è ùå îáñúäèì ðåàëèçàöèÿòà ìó. Eòî êàê èçãëåæäà òÿ:

const ArraySize = 24; // default size
class IntArray {
public;
// operations performed on arrays
IntArray( int sz = ArraySize );
IntArray( const IntArray& );
~IntArray() { delete ia; }
IntArray& operator = ( const IntArray& );
int& operator[]( int );
int getSize() { return size; )
protected:
// internal data representation
int size;
int *ia;
};

Åäíà äåôèíèöèÿ íà êëàñ ñå ñúñòîè îò äâå ÷àñòè: ãëàâà íà êëàñ, ñúñòîÿùà ñå îò êëþ÷îâàòà äóìà class è èìå, è òÿëî, çàòâîðåíî âúâ ôèãóðíè ñêîáè è çàâúðøâàùî ñ òî÷êà è çàïåòàÿ. Èìåòî íà êëàñà ïðåäñòàâÿ åäèí íîâ òèï äàííè. Òîé ìîæå äà ñëóæè çà ñïåöèôèêàòîð íà òèï ïî ñúùèÿ íà÷èí, ïî êîéòî è âãðàäåíèòå òèïîâè ñïåöèôèêàòîðè. Ñëåäâàò íÿêîëêî ïðèìåðà çà äåôèíèðàíå íà ïðîìåíëèâè îò êëàñà IntArray:

const int SZ = 10;
int mySize;
int ia[SZ]; // predefined array
IntArray myArray ( mySize ), iA( SZ );
IntArray *pA = &myArray;
InrArray iA2; // 24 elements by default

Òÿëîòî íà êëàñà ñúäúðæà íÿêîëêî äåôèíèöèè. Åëåìåíòèòå íà êëàñà ïðåäñòàâÿò îïåðàöèèòå, êîèòî ìîãàò äà áúäàò èçïúëíÿâàíè îò êëàñà, è äàííèòå, íåîáõîäèìè çà îïðåäåëÿíå íà ñâîéñòâàòà ìó.  íàøèÿ ñëó÷àé öåëèÿò ìàñèâ ñå ïðåäñòàâÿ ÷ðåç äâà åëåìåíòà äàííè:

1. size, êîéòî ñúäúðæà áðîÿ íà åëåìåíòèòå íà ìàñèâà.

2. ia, êîéòî àäðåñèðà ïàìåòòà, êúäåòî ñå ðàçïîëàãàò åëåìåíòèòå.

Êëþ÷îâèòå äóìè protected è public êîíòðîëèðàò äîñòúïà äî åëåìåíòèòå íà êëàñà. Åëåìåíòèòå, îïèñàíè â ðàçäåëà public íà êëàñà ñà äîñòúïíè îò ïðîèçâîëíî ìÿñòî íà ïðîãðàìèòå. Åëåìåíòèòå, íàìèðàùè ñå â ðàçäåëà protcted ñà äîñòúïíè ñàìî ÷ðåç ÷ëåí-ôóíêöèèòå íà êëàñà IntArray. Òîâà îãðàíè÷åíèå âúðõó äîñòúïà å èçâåñòíî êàòî ñêðèâàíå íà èíôîðìàöèÿ.

Èçîáùî, åäèíñòâåíî íà ÷ëåí-ôóíêöèèòå íà êëàñà å ðàçðåøåí äîñòúïà äî äàííîâèòå ìó åëåìåíòè. Òîâà èìà äâå îñíîâíè ïðåäèìñòâà:

1. Êîãàòî ñå íàëàãà ïðîìÿíà íà ïðåäñòàâÿíåòî íà äàííèòå â êëàñà ñå ïðîìåíÿò ñàìî ôóíêöèèòå íà êëàñà, à íå è ïîòðåáèòåëñêèòå ïðîãðàìè, êîèòî ãî èçïîëçóâàò.

2. Êîãàòî ñå ïîÿâè ãðåøêà ïðè îáðàáîòêàòà íà åëåìåíòèòå îò äàííè íà êëàñà ìîæå äà áúäå ïðåãëåäàíî ñàìî ìàëêî ìíîæåñòâî îò ôóíêöèè, îïèñàíè â íåãî, âìåñòî äà ñå ïðåãëåæäà öÿëàòà ïðîãðàìà.

Òðè îò ÷ëåí-ôóíêöèèòå íà IntArray - çà èíèöèàëèçàöèÿ è îñâîáîæäàâàíå - èçïîëçóâàò èìåòî íà êëàñà êàòî ñâîå èìå. Âúïðåêè, ÷å ñà äåôèíèðàíè îò ïðîåêòàíòà íà êëàñà, òå ñå èçâèêâàò àâòîìàòè÷íî îò êîìïèëàòîðà. Ôóíêöèÿòà, ïðåäøåñòâàíà îò òèëäà (“~”), ò.å. ôóíêöèÿòà çà îñâîáîæäàâàíå, ñå íàðè÷à äåñòðóêòîð. Äðóòèòå äâå ôóíêöèè ñëóæàò çà èíèöèàëèçàöèÿ; òå ñå íàðè÷àò êîíñòðóêòîðè. Êîíñòðóêòîðúò

IntArray iA2;

îáðàáîòâà îáè÷àéíèòå äåêëàðàöèè. sz ïðåäñòàâÿ ðàçìåðà íà ìàñèâà, æåëàí îò ïîòðåáèòåëÿ. Àêî ïîòðåáèòåëÿò íå çàäàäå òàêúâ ðàçìåð, ïî ïîäðàçáèðàíå ìàñèâúò ùå ñúäúðæà ArraySize íà áðîé åëåìåíòè. Òàêúâ å ðàçìåðà íà iA2 â äåôèíèöèÿòà:

IntArray iA2;

Åòî åäíà ðåàëèçàöèÿ íà ïðåäñòàâèòåë íà IntArray(). Òîé ñå âúâåæäà ÷ðåç îïåðàòîðà new. Òîçè îïåðàòîð îáðàáîòâà äèíàìè÷íîòî ðàçïðåäåëåíèå íà ïàìåòòà. Ðàçäåë 4.1 ðàçãëåæäà îïåðàòîðà new.

IntArray::IntArray( int sz ) {
size = sz;

// allocate an integer array of size
// and set ia to point to it

ia = new int[ size ];

// initialize array

for ( int i = 0; i < sz; ++i )
ia[ i ] = 0;
}

Îïåðàòîðúò äâå äâóåòî÷èÿ :: ñå íàðè÷à scope îïåðàòîð (çà îáõâàò). Òîé óêàçâà íà êîìïèëàòîðà, ÷å ôóíêöèÿòà IntArray å äåôèíèðàíà êàòî ÷ëåí íà êëàñà IntArray. Ôóíêöèèòå, êîèòî ñà åëåìåíò íà äàäåí êëàñ èìàò äîñòúï äà ñîáñòâåíèòå ñè êëàñîâè åëåìåíòè äèðåêòíî. Êîãàòî íàïèøåì

size = sz;

size ñå îòíàñÿ äî äàííè èçìåæäó êëàñîâèòå ÷ëåí-ïðîìåíëèâè, çà êîèòî å áèëà èçâèêàíà ÷ëåí-ôóíêöèÿòà.  íàøèÿ ïðèìåð, size å ÷ëåí-äàííè íà iA2.

Âòîðèÿò ïðåäñòàâèòåë íà IntArray() îáðàáîòâà èíèöèàëèçàöèÿòà íà åäèí îáåêò îò òèï IntArray ÷ðåç äðóã. Òÿ ñå èçâèêâà àâòîìàòè÷íî, êîãàòî ñå ñðåùíå äåôèíèöèÿ îò âèäà:

IntArray iA3 = myArray;

Òàçè ðåàëèçàöèÿ èçãëåæäà êàòî äðóãàòà, ñ èçêëþ÷åíèå íà òîâà, ÷å ñå êîïèðàò åëåìåíòèòå è ðàçìåðà íà ìàñèâà.

IntArray::IntArray( const IntArray &iA ) {
size = iA.size;
ia = new int[ size ];
for ( int i = 0; i < size; ++i )
ia[ i ] = iA.ia[ i ];
}

Çà äà ñå îñèãóðè äîñòúï äî ïîäõîäÿùàòà ïðîìåíëèâà â êëàñà òðÿáâà äà ñå èçïîëçóâà îïåðàòîð çà èçáîð íà ÷ëåí:

1. Îïåðàòîðúò òî÷êà (“.”) ñå èçïîëçóâà, êîãàòî ïðîãðàìèñòúò èñêà äîñòúï äî ÷ëåí-äàííè èëè ÷ëåí-ôóíêöèÿ íà ïîäõîäÿùèÿ êëàñ íà îáåêòà.
2. Îïåðàòîðúò ñòðåëêà (“->”) ñå èçïîëçóâà, êîãàòî ïðîãðàìèñòúò èñêà äîñòúï äî ïîäõîäÿùèÿ êëàñ íà îáåêòà êàòî ñå èçïîëçóâà óêàçàòåë êúì êëàñ. Íàïðèìåð, çíà÷åíèåòî íà èçðàçà

iA.size;

ìîæå äà áúäå ôîðìóëèðàíî òàêà: Èçáåðè ÷ëåí-äàííèòå size îò êëàñà íà îáåêòà iA.

Ïðèñâîÿâàíåòî íà ñòîéíîñòòà íà åäèí îáåêò îò òèï ìàñèâ ÷ðåç äðóã ñå îáðàáîòâà òàêà:

IntArray& operator= ( IntArray& );

Ãîðåñïîìåíàòèÿò îïåðàòîð å ÷àñò îò ìåõàíèçìà, êîéòî ïîçâîëÿâà íà êëàñà äà ïðåçàðåæäà çíà÷åíèåòî íà Ñ++ îïåðàòîðèòå, êîãàòî òå ñå ïðèëàãàò êúì îáåêòè îò òèï êëàñ. (Ðàçäåë 6.3) îáñúæäà ïîäðîáíî ïðåçàðåæäàíåòî íà êëàñîâèòå îïåðàòîðè). Åòî è ðåàëèçàöèÿòà íà òàçè ôóíêöèÿ. Çàáåëåæåòå, ÷å òÿ äàâà íà ìàñèâà-íàçíà÷åíèå ðàçìåðà íà ìàñèâà, îò êîéòî ñå êîïèðà.

IntArray& IntArray::Operator=( const IntArray &iA ) {
delete ia; // free up existing memory
size = iA.size; // resize target
ia = new int[ size ]; // get new memory
for ( int i = 0; i < size; ++i )
ia[ i ] = iA.ia[ i ] ; // copy
return *this; }

Âæ. Ðàçäåë 6.4 çà ïîâå÷å èíôîðìàöèÿ îòíîñíî îïåðàòîðà:

return *this;

Ïðåçàðåäåíèÿò îïåðàòîð çà ïðèñâîÿâàíå ùå áúäå èçâèêâàí àâòîìàòè÷íî âèíàãè, êîãàòî ñå ïðèñâîÿâà åäèí îáåêò îò òèï IntArray íà äðóã. Íàïðèìåð,

ia2 = myArray;

Êëàñúò ìàñèâ íå áè ïðåäèçâèêâàë òàêúâ ïðàêòè÷åñêè èíòåðåñ àêî ïîòðåáèòåëÿò íå ìîæå ëåñíî äà èíäåêñèðà åäèí êëàñîâ îáåêò. Íåîáõîäèìî å äà ñå ïîääúðæà ñëåäíàòà êîíñòðóêöèÿ çà öèêúë:

for ( int i = 0; i < upperBound; ++i )
myArray[ i ] = myArray[ i ] + 1;

êúäåòî íà upperBound å äàäåíà ñòîéíîñòòà íà size îò îáåêòà myArray íà êëàñà IntArray. Âñè÷êî òîâà ìîæå äà áúäå ðåàëèçèðàíî ÷ðåç ÷ëåí-ôóíêöèèòå getSize() è operator[]. getSize(), íàðå÷åíà ôóíêöèÿ çà äîñòúï, ïðåäëàãà äîñòúï çà ÷åòåíå íà åäíà äðóãà ñîáñòâåíà ñòîéíîñò. Ïîíåæå òÿ å ìíîãî ìàëêà, äåôèíèöèÿòà é å âêëþ÷åíà â äåôèíèöèÿòà íà êëàñà. UpperBound ìîæå äà ïîëó÷è ñòîéíîñò êàòî èçïîëçóâà getSize():

upperBound = myArray.getSize();

èëè ñàìàòà getSize() ìîæå äà çàìåñòè upperBound â öèêúëà for:

for ( int i = 0; i < myArray.getSize(); ++i )

Ôóíêöèÿòà, ðåàëèçèðàùà èíäåêñíèÿ îïåðàòîð, íå å ìíîãî ïî-ãîëÿìà îò getSize(), íî òðÿáâà äà å òàêà ðåàëèçèðàíà, ÷å äà îñèãóðÿâà âúçìîæíîñò êàêòî çà ÷åòåíå, òàêà è çà çàïèñ. ×àñòòà, îñèãóðÿâàùà ÷åòåíåòî ñå ðåàëèçèðà ïðîñòî: âçåìà ñå ñòéíîñòòà íà èíäåêñà è ñå âðúùà ñúîòâåòíèÿ åëåìåíò. Òîâà å íåîáõîäèìî çà ðåàëèçèðàíå íà îïåðàòîðè îò âèäà:

int i = myArray[ someValue ];

êàêòî è îò âèäà:

myArray[ i ] = someValue;

Çà äà ñå ÿâÿâà myArray[i] îò ëÿâàòà ñòðàíà íà îïåðàòîð çà ïðèñâîÿâàíå, òîé òðÿáâà äà èìà ñòîéíîñò çà çàïèñ (lvalue). Òîâà ìîæå äà áúäå íàïðàâåíî ÷ðåç äåôèíèðàíå íà âðúùàíàòà ñòîéíîñò îò ïñåâäîíèìåí /ñúîòíàñÿù/ òèï ( äà ïðèïîìíèì, ÷å òîçè òèï ïðåäëàãà ïñåâäîíèì íà äàäåíà ïðîìåíëèâà - Ðàçäåë 4.7 ðàçãëåæäà âðúùàíåòî íà ñòîéíîñò îò òèï-ïñåâäîíèì). Ðåàëèçàöèÿòà íà òàçè ÷ëåí-ôóíêöèÿ áè ìîãëà äà èçãëåæäà òàêà:

int& IntArray::Operator[](int index) { return ia[index]; }

Îáèêíîâåíî, äåôèíèöèÿòà íà êëàñà, êàêòî è íà âñè÷êè ñâúðçàíè ñ íåãî êîíñòàíòíè ñòîéíîñòè ñå çàïèñâàò â åäèí çàãëàâåí ôàéë. Òîçè ôàéë ñå èìåíóâà ÷ðåç èìåòî íà êëàñà.  ãîðåîïèñàíèÿ ñëó÷àé çàãëàâíèÿò ôàéë ñå íàðè÷à IntArray.h. Âñè÷êè ïðîãðàìè, êîèòî êëàñúò IntArray() èçïîëçóâà, òðÿáâà äà ñà âêëþ÷åíè â òîçè çàãëàâåí ôàéë. Ñúîòâåòíî, ÷ëåí-ôóíêöèèòå íà êëàñà îáèêíîâåíî ñå çàïèñâàò â òåêñòîâ ôàéë, èìåíóâàí ñúùî ÷ðåç èìåòî íà êëàñà.  òîçè ñëó÷àé, ÷ëåí-ôóíêöèèòå ùå áúäàò çàïèñàíè âúâ ôàéëà IntArray.C. Çà äà èçïîëçóâà òåçè ôóíêöè ïðîãðàìèñòúò òðÿáâà äà ãè äîáàâè êúì ñâîÿ èçïúëíèì ôàéë. Âìåñòî äà ïðåêîìïèëèðàìå òåçè ôóíêöèè ñ âñÿêà ïðîãðàìà, êîÿòî æåëàå äà èçïîëçóâà êëàñà Intarray, íèå ìîæåì äà ãè êîìïèëèðàìå â áèáëèîòåêà. Òîâà ñå ïðàâè òàêà:

$ CC -c IntArray.C
$ ar cr IntArray.a IntArray.o

ar å êîìàíäà çà ñúçäàâàíå íà àðõèâíà áèáëèîòåêà, ïîääúðæàíà îò ñèñòåìàòà UNIX. Ñèìâîëèòå cr, êîèòî ñëåäâàò, ïðåäñòàâëÿâàò îïöèè çà êîìàíäíèÿ ðåä. IntArray.o å åäèí îáåêòåí ôàéë, ñúäúðæàù ìàøèííèòå èíñòðóêöèè, ñúîòâåòñòâóâàùè íà Ñ++ ïðîãðàìàòà. Òîé ñå ãåíåðèðà, êîãàòî íà êîìïèëàòîðà ñå çàäàäå îïöèÿòà -ñ. IntArray.a å èìåòî, êîåòî ùå áúäå äàäåíî íà áèáëèîòåêàòà, ñúäúðæàùà êëàñà IntArray. Çà äà èçïîëçóâà òàçè áèáëèîòåêà, ïðîãðàìèñòúò ìîæå äà çàäàäå èìåòî é ÿâíî íà êîìàíäíèÿ ðåä êîãàòî êîìïèëèðà ïðîãðàìà:

$ CC main.c IntArray.a

Òîâà ùå ïðåäèçâèêà âêëþ÷âàíåòî íà ÷ëåí-ôóíêöèèòå íà êëàñà IntArray â èçïúëíèìèÿ êîä íà ïðîãðàìàòà.

Óïðàæíåíèå 1-14. Èëþñòðèðàíèÿò òóê êëàñ IntArray ïðåäëàãà ìèíèìàëåí áðîé îïåðàöèè. Íàïèøåòå ñïèñúê íà íÿêîè äîïúëíèòåëíè âúçìîæíîñòè, êîèòî ñ÷èòàòå, ÷å òðÿáâà äà áúäàò äîáàâåíè êúì òîçè êëàñ.

Óïðàæíåíèå 1-15. Ïîëåçíî áè áèëî äà ìîæåì äà èíèöèàëèçèðàìå îáåêò îò òèï IntArray ÷ðåç íÿêàêúâ öÿë ìàñèâ. Îïèøåòå åäèí îáù àëãîðèòúì çà ðåàëèçèðàíå íà ñëåäíèÿ êîíñòðóêòîð:

IntArray::IntArray( int *ia, int size );

Òðÿáâà äà ìîãàò äà áúäàò ïîääúðæàíè ñëåäíèòå äåôèíèöèè:

int ia[ 4 ] = { 0, 1, 2, 3 };
IntArray myIA( ia, 4 );

IntArray íè ïðåäñòàâÿ åäèí âàæåí àñïåêò îò èçïîëçóâàíåòî íà êëàñîâèÿ ìåõàíèçúì â Ñ++. IntArray ìîæå äà áúäå íàðå÷åí àáñòðàêòåí äàííîâ òèï. Ïðîãðàìèñòèòå ìîãàò äà èçïîëçóâàò êëàñà IntArray ïî ñúâñåì ñúùèÿ íà÷èí, ïî êîéòî è âñè÷êè îñòàíàëè ïðåäâàðèòåëíî äåôèíèðàíè òèïîâå äàííè â Ñ++. Òîçè àñïåêò íà êëàñîâåòå ñå ðàçãëåæäà â ãëàâè 5 è 6.

Âòîðè âàæåí àñïåêò íà êëàñîâèÿ ìåõàíèçúì å âúçìîæíàñòòà çà äåôèíèðàíå íà ïîäòèïîâè âðúçêè. Íàïðèìåð, IntArrayRC å åäèí òèï íà êëàñà öåëè ìàñèâè, êîéòî ñúùî îñèãóðÿâà ïðîâåðêà äàëè èíäåêñíèòå ñòîéíîñòè ñúîòâåòñòâóâàò íà äåôèíèðàíèÿ ìó îáõâàò. Òîé å ðåàëèçèðàí íà îñíîâàòà íà ò.í. íàñëåäñòâåí ìåõàíèçúì. Åòî äåôèíèöèÿòà íà IntArrayRC:

#include "IntArray.h"
class IntArrayRC : public IntArray { public:// constructors are not inherited
IntArrayRC( int = ArraySize );
int& operator[]( int );
protected:
void rangeCheck( int );
}

IntArrayRC òðÿáâà äà äåôèíèðà ñàìî òåçè àñïåêòè íà ðåàëèçàöèÿòà, êîèòî ñà ðàçëè÷íè èëè äîïúëíèòåëíè ñïðÿìî ðåàëèçàöèÿòà íà IntArray. Òîé òðÿáâà äà ïðåäëàãà:

1. òàêúâ èíäåêñåí îïåðàòîð íà åêçåìïëÿðèòå ñè, êîéòî äà ïðîâåðÿâà äàëè äàäåí èíäåêñ íå íàäõâúðëÿ ãðàíèöèòå íà ìàñèâà.
2. ôóíêöèÿ, êîÿòî èçâúðøâà òàçè ïðîâåðêà.
3. ñîáñòâåí íàáîð îò ôóíêöèè çà àâòîìàòè÷íà èíèöèàëèçàöèÿ - ò.å. ñîáñòâåí íàáîð îò êîíñòðóêòîðè.


Ñòðàíèöè: «4 5 6 7 8 »

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

ðåêëàìà

© Âñè÷êè ïðàâà çàïàçåíè. 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