Методы класса.
Class employee
Void show_employee(void)
{
cout << "Имя: " << name << endl;
cout << "Номер служащего: " << employee_id << endl;
cout << "Оклад: " << salary << endl;
};
};
int main()
{
system("chcp 1251");
employee worker, boss;
strcpy(worker.name, "Иванов");
worker.employee_id = 12345;
worker.salary = 25000;
strcpy(boss.name, "Савин");
boss.employee_id = 01;
boss.salary = 100000.00;
worker.show_employee();
boss.show_employee();
system("pause");
}
Программа объявляет два объекта типа employee — worker и boss, а затем использует оператор точку для присваивания значений элементам и вызова функции show_employee.
2.2.Определение методов класса вне класса.
В предыдущем классе 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) и оператором глобального разрешения:;. Следующая программа помещает определение функции show_employee вне класса, используя оператор глобального разрешения для указания имени класса:
Primer 2 Лекция 2.
#include <iostream>
#include <string.h>
using namespace std;
{
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;
};
int main()
{
system("chcp 1251");
employee worker, boss;
strcpy(worker.name, "Иванов");
worker.employee_id = 12345;
worker.salary = 25000;
strcpy(boss.name, "Савин");
boss.employee_id = 01;
boss.salary = 100000.00;
worker.show_employee();
boss.show_employee();
system("pause");
}
Классы C++ позволяют программам группировать данные объекта и функции объекта (методы), которые оперируют с этими данными, в одной переменной. Есть две возможности определения методов объекта. Первая состоит в том, что можно включить весь код функции внутрь определения класса. Несмотря на то, что включение кода метода в определение класса может представляться удобным, однако, когда классы становятся сложнее и включают несколько методов, операторы функций могут вносить беспорядок в определение классов. Многие программы определяют операторы функции вне класса. В определение класса программа должна включать прототип функции, который указывает имя функции, тип возвращаемого значения и типы параметров.
Для определения функции вне определения класса программа должна предварять определение функции именем класса и оператором глобального разрешения:
|
|
return_type class_name::function_name(parameters) |
{ // Операторы } |
Следующая программа создает класс dog, который содержит несколько полей данных и функцию show_breed. Программа определяет функцию класса вне определения самого класса. Затем программа создает два объекта типа dog и выводит информацию о каждой собаке:
Primer 3 Лекция 2.
#include <iostream>
#include <string.h>
using namespace std;
{
public:
char breed[64];
int average_weight;
int average_height;
int show_breed();
};
int dogs::show_breed()
{
cout << "Порода: " << breed << endl;
cout << "Средний вес: " << average_weight << endl;
cout << "Средняя высота: " << average_height << endl;
}
int main()
{
system("chcp 1251");
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();
system("pause");
}