Статични функции в С и С++
8
Основи на програмиранетоА. Петров
ОП – слайдове към лекция 12
Още за функциите в С и С++.
1. Статични функции.
Статични функции се дефинират чрез ключовата дума static. И за тях важи, че те са достъпни само в рамките на файла, в който са дефинирани, т.е. от дефиницията до края на файла. Подобно на стат. външни променливи те не могат да бъдат като extern в други файлове и са недостъпни за ф-ии, дефинирани в други файлове. Може да има ф-ии и външни променливи със същите имена в други файлове.
Възможно е и създаването на статични глобални променливи чрез ключова дума static при тяхното деклариране. Нейната област на действие, както и възможността за нейната промяна се ограничават само в областта на файла, в който тя е декларирана. Програми в други файлове няма да имат достъп до тази променлива и няма да могат да променят нейната стойност. За целта се създава малък файл, който съдържа само функцията, използваща статичната глобална променлива. Този файл се компилира отделно, след което може да се работи със статичната глобална променлива без опасност от странични ефекти.
Чрез статични функции и статични външни променливи се реализира идеята за “скриване на данните” (date hiding) в модулното програмиране. Ако, например, в даден файл се дефинират няколко статични функции и външни променливи, то достъпът до променливите ще става само чрез съответните статични функции. Така ще има модули със строго регламентиран достъп до данните.
2. Функции с подразбиращи се аргументи.
В езика С++ има някои специфични особености на функциите, които не са реализирани в С. В С++ могат да се използват функции с подразбиращи се аргументи с зададени подразбиращи се стойности. Така може тези аргументи да бъдат пропуснати при извикването на ф-ята. За тази цел се извършва инициализиране на подразбиращите се параметри чрез знака за присвояване, както в долния пример:
Пример 12.1
float func (int х, float у = 3.5, char *s = "string1" )
{
cout << "x=" << х << " y=" << у << " s=" << s << ' n';
}
В случая подразбиращи се аргументи са у и s на функцията func и техните подразбиращи се стойности са съответно 3.5 и "string1". Функцията func може да бъде извикана по три различни начина – с един, с два и с три аргумента:
func ( 3 );
func ( 3, 3.0 );
func ( 3, 4.0, "string2" );
Резултатите от тези три изпълнения на функцията func ще бъдат съответно:
х=3 у=2.3 s= string1
х=3 у=3.0 s= string1
х=3 у=4.0 s= string2
При ф-ии с подразбиращи се аргументи трябва да се има предвид две правила:
-
Ако при извикването на функцията се пропусне някой от подразбиращите се аргументи в тялото и се използва неговата подразбираща се стойност. Ако, обаче, при извикването се въведе нова стойност на подразбиращ се аргумент, в функцията се използва въведената, а не подразбиращата се стойност;
-
Ако един аргумент на дадена функция е подразбиращ се, то всички аргументи, които се намират след него в списъка също трябва да бъдат подразбиращи се. Следователно дефиниция от вида:
int f ( int х, float у = 3.5, char *s )//ГРЕШКА – аргументът s не е подразбиращ!
{
.............
Други реферати:
Обща характеристика на българското стопанство през 1919-1929г
Обща характеристика на взаимоотношенията с клиенти
Обща теория на пазарното стопанство
Обща теория на статистиката-основни понятия
Обща характеристика и методологически основи на прогнозирането
Изтегли реферата