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

В тази статия ще разгледаме следното:

  • Какво е приятелски функции, и, по-важното е, защо те са необходими.
  • Какво е различно от конвенционалните методи на функциите на класа лесен класа.
  • Как да се декларират и дефинират приятелски функции.
  • Как да се обадя приятелски функции от главния Основната функция ().

Най-важното, но също така, най-вероятно, най-непонятното за вас сега е да се определят функциите на приятел.

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

Дълго не се рови в същността на това определение, но това е по-добре да отиде в следващия параграф. Обещавам, че след като прочетете статията, която да се върнете към това определение, както и посещение на идеята: "Е, да - това е! Всичко е ясно! "

използване на пространството от имена STD;

име = нов знак [20];

Cout <<". Деструктор. " <

приятел невалидни getData (Woman25);

>; // От дефиницията на клас Woman25

невалидни setData (знак * п, Int w, Woman25 обект) // определи приятел функция setData на

анулира getData (Woman25 обект) // определи приятел-функцията getData

Cout <

анулира Woman25 :: setData (знак * п, Int w) / / определи метод набор класа

анулира Woman25 :: getData () // дефинира метода за оформление клас

Cout <

анулира Woman25 :: съвет () // дефинира метод клас на Съвета (съвети)

ако (тегло <55)

Cout <<"Вам надо потреблять больше калорий!" <

> Иначе ако (тегло> = 55 тегло <= 65)

Cout <<"Ваш вес в норме!" <

Cout <<"Вам надо ограничивать себя в еде!" <

Woman25 Норм; // създаване на Норм обект конструктор и работа на тегло е = 60, име - Норма

Norm.getData (); // извикате метода на класа

Woman25 Анна; // Вторият обект

Anna.setData ( "Ан", 100); // извикате метода на класа

Anna.getData (); // извикате метода на класа

Anna.advise (); // извикате метода на класа

Woman25 Инна; // Третият обект

setData ( "Ина", 50, Ина); // Извикване приятел функция

getData (Ина); // Извикване приятел функция

Inna.advise (); // извикате метода на класа

Сега идва може би най-интересно - това е определението за класа на нашите приятелски функции и обичайните методи на класа. Всичко това се намира в редове 32 - 66. Виж, когато ние определяме приятелски функции. линии 32-36 и 38 - 41. Ние не използваме оператора. двойно дебелото черво (метод площ видимост). Това вече ни казва, че един приятел функция не принадлежи към класа, не му компонент. И при определянето на други методи за използване на оператора. Това е задължително. метод клас съветва (). въз основа на данните за теглото, той дава на потребителя един от съветите, или доклади, които нормално тегло.

Отиди на основната функция - линия 68 - 87. Тук ние се създаде обект от клас Woman25 Норм. при създаването на работа, която строителя и инициализира име и тегло елементи. Извикване метод клас Norm.getData (); за да се покаже стойността на нормата. С втория създаден обект Woman25 Анна; действа като стимулира обичайния комплект и да получите - методи на клас, и един трети аспект Woman25 Инна; - причиняване на приятелски функции. Както можете да видите, те се наричат ​​като функции, които не принадлежат към класа. клас обект минаваме като параметър.

Стартирайте програмата и да видите следното:

Destructor.
. Destructor.
. Destructor.

За да продължите, натиснете произволен клавиш.

Сега, както винаги, малко теория, за консолидиране на материала:

  • Приятелски функция може да се намира навсякъде в рамките на класа - частни. публична или защитени. Тя по всяко време ще имат достъп до частни и класни елементи, дори ако тя е в частна сфера (както е в нашия пример), ще бъде възможно да се прилагат извън класа, без да се използват специални техники.
  • Когато ние определяме приятел функция, елементи на класа, трябва изрично да го минават като функция параметър. Тъй като това не е клас компонент, той не получава указател към това.
  • Като опция, приятелската функция също трябва да премине указател или препратка към обект клас. В противен случай той няма да видите клас дадена й да приеме и процес.
  • Функцията може да се използва като приятелски настроени към няколко класа.
  • Наречен приятелски функции като нормални функции. Т.е. не се използва този метод - Obekt_klassa.funktsiya (). След като направите всички необходими параметри, за да го, когато се обадите, тя видя с елементи на клас и обект, за да работят.

Това е всичко за началото.

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

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