class DarkRaha extends com { // разработка приложений
            String a="Главная" b="Контакты" c="О сайте"
};

STL

основы

введение
Инструментарий
Проекты в C++
Комментарий
Утверждения
Идентификаторы
Область видимости
Литералы
Типы данных, переменные
Константы, перечисления
Выражения и операции
Агрегатные типы
Указатели
Ссылки
Массивы
Строки
Управляющие операторы
Функции
Аргументы функции

ООП

Терминология
Определение классов
Константные методы
Статические члены
Наследование
Инкапсуляция
Полиморфизм
Инициализация и уничтожение объектов
this

прочее

шаблоны
макросы
динамическая память
исключения
rtti

Справочник по C++

Функции

Функция, процедура или подпрограмма - именованная область памяти, содержащая програмный код процессора. Функции позволяют использовать один и тот же код многократно и только там разрешено использовать управляющие операторы. Наиболее употребительные функции объединяют в библиотеки. Также в каждый пакет С++ входит набор стандартных библиотек.

 /***********
правило объявления функции (прототипа функции)
тип_возвращаемого_значения имя (список_аргументов);

правило определения функции
тип_возвращаемого_значения имя (список_аргументов){
... // тело функции
}
************/

// объявление функции 
float arithmetical_mean(float arg1,float arg2); 

// определение функции
float arithmetical_mean(float arg1,float arg2) {
float ret= (arg1+arg2)/2;
return ret;
} 

float f=arithmetical_mean(5,9); // вызов функции

стек

Для хранения аргументов и локальных переменных обычно используется специальная область памяти - стек. Так как операции с ней довольно медленные, большие данные лучше передавать через ссылки или указатели, а для локальных переменных использовать динамическую память.

Если необходимо сохранить значение локальной переменной между вызовами функции, то ей назначают атрибут static.

атрибут inline

Атрибут функции inline указывает компилятору, что по возможности вместо кода вызова функции нужно вставить код ее тела. Атрибут назначается небольшим функциям, без управляющих операторов, иначе атрибут игнорируется. Определение таких функций также можно выносить в заголовочные файлы. Таким образом, можно повысить скорость программы интенсивно использующей подобные функции.

атрибут extern

Атрибут extern используется в объявлении прототипа функции, находящейся в другом модуле или библиотеке.

рекурсия

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


#include <iostream>
using namespace std; 

int factorial(int n) {
// если неверный аргумент	
if(n<=0) return 0; 	

// условие выхода из рекурсии
if(n==1) return 1; 

// рекурсивный вызов функции
int ret=factorial(n-1)*n;
return ret;
}

int main(){
cout<<"factorial(5)="<<factorial(5)<<endl;
return 0;
}

область видимости

Так как функция является отдельной областью видимости, то локальные имена скрывают такие же имена в глобальной области. Для доступа к глобальным именам используется операция расширения видимости ::.


#include <iostream>
using namespace std;

// глобальная переменная
int A=10;

int main() {
// локальная переменная A скрывает глобальную A
int A=30; 	

cout<<"loacal A="<<A<<", 
global A="<<::A<<endl;; 	

return 0;
}

массив функций

Напрямую создать массив функций нельзя. Но так как имя функции является указателем на функцию, то можно создать массив указателей на функцию.

#include <math.h>
typedef double (*func)(double);
...
// массив указателей на функции типа func
func f[]={fabs, sin}; 
cout<<f[0](-23);

Также можно воспользоваться средствами stl, используя вместо функций функциональные объекты. В разделе ассоциативные массивы приведен пример массива функций.


Рейтинг@Mail.ru