ПредишенСледващото

CharToOem ( "триъгълник област", S);

В този пример, точка Dot обявен клас и решава проблема за изчисляване на разстояние между две точки. Проблемът е решен по три различни начина.

Функция doubleDot. Dist (Dot B) Конст Dot е клас член, и връща стойност на разстоянието между текущи и целеви места. CONST класиралият се казва на компилатора, че състоянието на текущия обект не трябва да се променя. Като параметър, функцията получава целия обект от типа точка. който заема 17 байта в паметта. функция член на класа се използва от оператора: A .Dist (В), където А е текущия обект, и обект B - параметър.

Функция приятел doubleDist (constDot А. constDot Б) връща стойността на разстоянието между две точки. Конст квалификант на параметър казва на компилатора, че не трябва да се променят параметрите на състоянието. Както параметрите на функцията получава две препратки към обекти Dot тип. който е в памет на 4 байта всеки. Dist функция се използва от оператора (А. В). Тъй като функцията е приятелска клас Dot. Достъп до частните членовете на х и у параметри А и Б. които са обекти от типа точка. с помощта на оператора на точка, като например: А .x.

Използване на указатели и препратки към обекти като функция на параметрите, вместо обекти намалява количеството памет, излишни функция, както и времето на разговора.

Горният пример също се състои от решение на проблема за изчисляване на площта на триъгълник, използвайки глобалната функции doubleArea (constDot А. constDot Б. constDot C), който получава три препратки към условията и връща стойността на зоната на триъгълника. Площ функция се използва от оператора (A. B. С). Въпреки факта, че функцията използва тип обекти точка. функция на тялото не съдържа препратки към частните членове на класа. Ето защо, ние не декларират функцията като приятелски.

Функции приятелски няколко групи,

Функцията може да бъде приятелски настроен към множество класове. В примера по-долу решава проблема за изчисляване на координатите на края на даден вектор, началото на който е в предварително определена точка.

клас Dot // клас точка

Vec AC ( "АС", 2, 2);

В примера, класовете са обявени Dot точка и вектор ВЕЦ и постави задачата се решава по три различни начина.

Функция voidDot. EndVec (constDot А. constVec AB) е член на Dot клас. получава постоянна връзка с вектора и началото на вектора и предава координатите на края на вектора на текущото местоположение. Като частни членове-ВЕЦ клас данни недостъпни Dot клас. ние използваме отворени функции страни клас ВЕЦ - GetY () и GetX (). функция член на класа се използва от оператора: С .EndVec (A. AC), където С е текущия обект, и обектите А и AC - параметри.

Функция voidVec. EndVec (constDot А. Dot Б) е член на класа ВЕЦ. получава постоянна връзка с началния вектор и края на връзката на вектор. Когато изчисляването на текущите стойности на прогнозите на векторни се използват. Като частни членове-Data Dot клас на разположение в класа ВЕЦ. ние използваме функциите отворени страни клас Dot - GetX (), GetY (), SetX (), SetY (). функция член на класа се използва от оператора: AC .EndVec (A. C), където целта е променлив ток, и обектите А и С - параметри.

Функция приятел voidEndVec (constDot А. constVec AB. точка Б) Dot е приветлив клас и ВЕЦ. За тази цел, тя е обявена и в двете паралелки с приятеля ключова дума. Функцията получава постоянни препратки към началото на вектора и на вектора, както и препратка към края на вектора. Тъй като и двата класа затворени членове на данни и Dot Vec приятелски функции, налични, ние използваме "точка" оператор за достъп до данните. Удобно функция се използва от EndVec на оператора (A. AC. С).

функции държави, приятелски към друг клас

Функцията може да бъде член на един клас в друг клас и приятелски настроени. За да се покаже този синтаксис получаване малка промяна предишния пример.

Обадете се по-горе функции, не се различават от предишния пример.

А клас не може да обяви себе си приятел на някой друг клас. За да се механизъм среда е работил, той се обявява за приятелската среща в тази друга класа.

приятел classVec; // Vec клас е обявен други класове DOT

Свързани статии

Подкрепете проекта - споделете линка, благодаря!