Определение методов класса вне класса

 

В предыдущем классе employee функция была определена внутри самого класса (встроенная (inline) функция). При увеличении функций определение встроенных функций внутри класса может внести беспорядок в описание класса. В качестве альтернативы вы можете поместить прототип функции внутри класса, а затем определить функцию вне класса. Ваше определение класса с прототипом становится следующим:

 

class employee

 

{

public:

char name[64];

long employee_id;

float salary;

void show_employee(void); |———> Прототип функции

};

 

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

 

void employee:: show_employee (void) //----------->Имя класса

 

{

сout << "Имя: " << name << endl; Имя элемента cout << "Номер служащего: " << employee_id << endl;

cout << "Оклад: " << salary << endl;

};

 

Как видите, приведенный код предваряется определением функции с именем класса (employee) и оператором глобального разрешения (::). Следующая программа CLASSFUN.CPP помещает определение функции show_employee вне класса, используя оператор глобального разрешения для указания имени класса:

 

#include <iostream.h>

 

#include <string.h>

 

class employee

 

{

public:

char name [64];

long employee_id;

float salary;

void show_employee(void);

};

 

void employee::show_employee(void)

{

cout << "Имя: " << name << endl;

cout << "Номер служащего: " << employee_id << endl;

cout << "Оклад: " << salary << endl;

};

 

void main(void)

 

{

employee worker, boss;

strcpy(worker.name, "John Doe");

worker.employee_id = 12345;

worker.salary = 25000;

strcpy(boss.name, "Happy Jamsa");

boss.employee_id = 101;

boss.salary = 101101.00;

worker.show_employee();

boss.show_employee();

}

 

Методы класса

 

Классы C++ позволяют вашим программам группировать данные объекта и функции объекта (методы), которые оперируют с этими данными, в одной переменной. У вас есть две возможности определения методов объекта. Первая состоит в том, что вы можете включить весь код функции внутрь определения класса. Несмотря на то что включение кода метода в определение класса может представляться удобным, однако, когда классы становятся сложнее и включают несколько методов, операторы функций могут вносить беспорядок в определение классов. Таким образом, многие программы определяют операторы функции вне класса. В определение класса программа должна включать прототип функции, который указывает имя функции, тип возвращаемого значения и типы параметров.

 

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

 

return_type class_name::function_name(parameters)

{ // Операторы }

 

 

ВТОРОЙ ПРИМЕР

 

Следующая программа PEDIGREE.CPP создает класс dog, который содержит несколько полей данных и функцию show_breed. Программа определяет функцию класса вне определения самого класса. Затем программа создает два объекта типа dog и выводит информацию о каждой собаке:

 

#include <iostream.h>

 

#include <string.h>

 

class dogs

 

{

public:

char breed[64];

int average_weight;

int average_height;

void show_dog(void);

};

 

void dogs::show_breed(void)

 

{

cout << "Порода: " << breed << endl;

cout << "Средний вес: " << average_weight << endl;

cout << "Средняя высота: " << average_height << endl;

}

 

 

void main(void)

 

{

dogs happy, matt;

strcpy(happy.breed, "Долматин");

happy.average_weight = 58;

happy.average_height = 24;

strcpy(matt.breed, "Колли");

matt.average_weight =22;

matt.average_height = 15;

happy.show_breed();

matt.show_breed();

}

 

ЧТО ВАМ НЕОБХОДИМО ЗНАТЬ

 

Программы на C++ широко используют классы. Говоря кратко, классы позволяют вашим программам группировать для определенного объекта его данные и методы (функции), которые оперируют этими данными, в одной переменной. Как видите, классы очень похожи на структуры.

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

Программы на C++ представляют объекты посредством классов.

Класс, подобно структуре, содержит элементы. Элементы класса могут хранить информацию (данные) или быть функциями (методами), которые оперируют этими данными.

Каждый класс имеет уникальное имя.

После определения класса вы можете объявлять объекты этого класса, используя имя класса в качестве типа.

Для обращения к элементам класса (как к данным, так и к функциям) ваши программы используют оператор точку.

Программы могут определять функцию класса внутри или вне определения класса. Если вы определяете функцию вне определения класса, вам следует указать имя класса и использовать оператор глобального разрешения, например class:: function.

 

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: