Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лекция 1

.pdf
Скачиваний:
19
Добавлен:
07.02.2016
Размер:
3 Мб
Скачать
☆

Встроенные (inline) функции

Встраиваемой функцией называется функция код которой подставляется в то место строки программы, из которого она вызывается, т.е. вызов такой функции заменятся еѐ кодом.

Для встраивания функции:

1.Используется модификатор inline.

2.Функция определяется внутри тела класса

Встроенные (inline) функции

Действие не выполняется если:

функция содержит цикл или инструкцию goto;

функция рекурсивна;

функция содержит static переменные.

Дружественные функции

Для того, чтобы сделать функцию другом класса, требуется включить еѐ в прототип в public раздел объявления и предварить ключевым словом friend

Функции «друзья» используются в следующих случаях:

для перегрузки операторов любых типов;

для упрощения функций ввода-вывода

когда члены двух классов находятся во взаимосвязи с другими частями программы.

Дружественные функции

#include <iostream> #include <cmath> using namespace std; class ComplexNumber {

int real, imaginary; public:

ComplexNumber(){

real = 0; imaginary = 0;} ComplexNumber(double r, double im);

void show();

void add(const ComplexNumber &cn); double abs();

friend void add(ComplexNumber &obj1, const ComplexNumber &obj2);

friend double abs(const ComplexNumber &obj1); };

ComplexNumber::ComplexNumber(double r, double im) {

real = r; imaginary = im; }

void ComplexNumber::show() { cout << real;

if (imaginary >= 0) cout << "+"; cout << imaginary << "i" << endl;

}

void ComplexNumber::add(const ComplexNumber &cn) {

real += cn.real;

imaginary += cn.imaginary;

}

double ComplexNumber::abs() {

double tmp=real*real + imaginary*imaginary;

return sqrt(tmp);

}

Дружественные функции

void add(ComplexNumber &obj1, const ComplexNumber &obj2) {

obj1.real += obj2.real; obj1.imaginary += obj2.imaginary;

}

double abs(const ComplexNumber &cn) {

double tmp = cn.real*cn.real + cn.imaginary*cn.imaginary;

return sqrt(tmp);

}

int main() {

ComplexNumber obj1(2, 7); ComplexNumber obj2(1, -5);

obj1.add(obj2);

obj1.show();

add(obj1,obj2);

obj1.show();

cout << abs(obj1) << " " << obj2.abs();

return 0;

}