Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Программный пример перегрузки функций





 

Другое преимущество перегрузки функций заключается в возможности определять слегка различающиеся варианты одной и той же функции, каждый из которых предназначен для определенного типа данных. В качестве примера рассмотрим функцию с именем min(), которая находит меньшее из двух значений. Нетрудно написать варианты min(), которые будут выполняться по-разному для данных различных типов. Сравнивая два целых числа, min() вернет меньшее из них. Сравнивая два символа, min() может вернуть букву, стоящую в алфавите ранее другой, независимо от того, прописные эти буквы или строчные. В таблице ASCII прописные буквы имеют значения, на 32 меньшие, чем соответствующие строчные. Таким образом, игнорирование регистра букв может быть полезным при упорядочении по алфавиту. Сравнивая два указателя, можно заставить min() сравнивать значения, на которые указывают эти указатели, и возвращать указатель на меньшее из них. Ниже приведена программа, реализующая все эти варианты min():

 

// demoOverload4.cpp: Defines the entry point for the console application.

//

 

 

#include "stdafx.h"

#include <iostream>

using namespace std;

#include <conio.h>

 

int min(int a, int b); // min() для int

char min (char a, char b); // min () для char

int * min(int *a, int *b); // min () для int*

 

int main(){

int i = 10, j =22;

cout << "min('X', 'a'): " << min('X', 'a') << "\n";

cout << "min(9, 3): " <<min(9, 3) << "\n";

cout << "*min(&i, &j): " << *min(&i, &j) << "\n";

 

getch();

return 0;

}

// min() для int. Возвращает меньшее значение.

int min (int a, int b)

{

if (a < b) return a;

else return b;

}

// min() для char - игнорирование регистра букв.

char min (char a, char b)

{

if(tolower(a) < tolower(b)) return a;

else return b;

}

/*

min() для указателей на int.

Сравнивает значения и возвращает указатель на меньшее значение.*/

int * min (int *a, int *b)

{

if (*a < *b) return a;

else return b;

}

 

Вот вывод этой программы:

 

 

Когда вы перегружаете функцию, каждый вариант этой функции может выполнять любые нужные вам действия. Нет никаких правил, устанавливающих, что перегруженные функции должны быть похожими друг на друга. Однако с точки зрения стиля перегрузка функции предполагает их взаимосвязь. Поэтому, хотя вы и можете дать одно и то же имя перегруженным функциям, выполняющим совсем разные действия, этого делать не следует. Например, вы можете выбрать ими sqr() для функций, одна из которых возвращает квадрат int, а другая - квадратный корень из значения double. Однако эти две операции фундаментально различаются, и использование для них понятия перегрузки функций противоречит исходной цели этого средства. (Такой способ программирования считается исключительно дурным стилем!) В действительности перегружать следует только тесно связанные операции.

 

Date: 2015-11-15; view: 286; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.005 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию