Опубликован: 10.12.2015 | Уровень: для всех | Доступ: платный
Лекция 21:

Перегрузка методов класса

< Лекция 20 || Лекция 21 || Лекция 22 >

Методы классов можно перегружать, так же как и любые другие функции С++.Перегрузка функций означает, что одно и то же имя могут использовать несколько функций. Компилятор выбирает нужную функцию в зависимости от сигнатуры. В приводимом ниже примере перегружены две функции сортировки - сортировка методом отбора и сортировка методом вставки.

//==========================================================
// Name        : class_overload.cpp
// Author      : Marat
// Version     :
// Copyright   : Your copyright notice
// Description : Hello World in C++, Ansi-style
//==========================================================

#include <iostream>
using namespace std;

#include<string.h>

#define array_size 6

class sorting_algoritms {

public:

void sort (int    *item, int count);
void sort (double *item, int count);
void print(int    *item, int count);
void print(double *item, int count);

};

//Функция сортировки методом отбора
void sorting_algoritms::sort(int *item, int count)
{
	register int a,b,c;
	int exchange;
	int t;
	for(a=0;a<count-1;++a)
	{
		exchange=0;
		c=a;
		t=item[a];
		for(b=a+1;b<count;++b)
		{
			if(item[b]<t)
			{
				c=b;
				t=item[b];
				exchange=1;
			}
		}
		if(exchange)
		{
			item[c]=item[a];
			item[a]=t;
		}
	}
}

//Функция сортировки методом вставки
void sorting_algoritms::sort(double *item, int count)
{
	register int a,b;
	double t;
	for(a=1;a<count;++a)
	{
		t=item[a];
		for(b=a-1;b>=0 && t<item[b];b--)
			item[b+1]=item[b];
			item[b+1]=t;
	}
}

//функция печати целых чисел
void sorting_algoritms::print (int *item, int count)
{
	for(int i=0;i<count;i++)
	{
		cout<<"  "<<item[i];
	}
}

//функция печати вещественных чисел
void sorting_algoritms::print (double *item, int count)
{
	for(int i=0;i<count;i++)
	{
		cout<<"   "<<item[i];
	}
}

int main() {
	int    a[array_size]={1,15,-4,6,8,7};
	double b[array_size]={0.63, 3.14, 2.71, -0.5, 29.8, 6.5};

		sorting_algoritms data;

		cout<<"\nUnsorted integer array...";
		data.print(a,array_size);
		data.sort (a,array_size);
		cout<<"\nInteger array after sorting...";
		data.print(a,array_size);

		cout<<"\nUnsorted float array...";
		data.print(b,array_size);
		data.sort (b,array_size);
		cout<<"\nFloat array after sorting...";
		data.print(b,array_size);
		cout<<"\n"<<endl;
	return 0;
}

Результат:

Unsorted integer array...     1  15 -4 6 8 7
Integer array after sorting...-4 1   6 7 8 15
Unsorted float array... 0.63 3.14 2.71 -0.5 29.8 6.5
Float array after sorting... -0.5 0.63 2.71 3.14 6.5 29.8
< Лекция 20 || Лекция 21 || Лекция 22 >
Зося Ковалева
Зося Ковалева

Хочу получить удостоверение. Сколько стоит оплата?

Aleksey Aplaev
Aleksey Aplaev
Россия, Chelybinsk
Александр Сидоров
Александр Сидоров
Россия, Самара