Хочу получить удостоверение. Сколько стоит оплата? |
Опубликован: 10.12.2015 | Уровень: для всех | Доступ: платный
Лекция 22:
Дружественные функции
< Лекция 21 || Лекция 22
Дружественные функции позволяют использовать закрытую информацию класса, не являясь членами этого класса. Эти функции, не описываемые в самом классе, могут работать с теми же ресурсами, что и функции-члены этого класса. В описании прототипа дружественных функций используется слово friend. В приводимом ниже примере сортировки методом Шелла (функция сортировки - член класса) печать производится дружественной функцией print.
//========================================================== // Name : friend_class.cpp // Author : Marat // Version : // Copyright : Your copyright notice // Description : Hello World in C++, Ansi-style //========================================================== #include <iostream> using namespace std; #define array_size 5 class sorting { //Дружественная функция friend void print(double *item, int count); public: void shell_sorting(double *item, int count); }; //Функция сортировки методом Шелла void sorting::shell_sorting(double *item, int count) { register int i,j,gap,k; double x; char a[]={9,5,3,2,1}; for(k=0;k<5;k++) { gap=a[k]; for(i=gap;i<count;++i) { x=item[i]; for(j=i-gap;x<item[j] && j>=0;j-=gap) item[j+gap]=item[j]; item[j+gap]=x; } } } void print(double *item, int count); int main() { double a[array_size]={0.5, 1.6, 1.4, 8.3, 5.8}; cout<<"\nUnsorted array..."; print(a,array_size); sorting data; data.shell_sorting(a,array_size); cout<<"\nArray after sorting..."; print(a,array_size); cout<<"\n"<<endl; return 0; } void print(double *item, int count) { for(int i=0;i<count;i++) { cout<<"\n"<<item[i]; } }
Результат:
Unsorted array… 0.5 1.6 1.4 8.3 5.8 Array after sorting... 0.5 1.4 1.6 5.8 8.3
< Лекция 21 || Лекция 22