Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Билеты ООП.docx
Скачиваний:
2
Добавлен:
21.04.2019
Размер:
87.01 Кб
Скачать
  1. Методы класса: классификация методов, доступ к членам класса, неявный параметр this. Определение и реализация методов. Использование методов для экземпляров класса.

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

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

return_type class_name::function_name(parameters) 

Методы класса вызываются с помощью оператора точка.

Например:

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(); }

Ключевое слово this обозначает объявленный неявно указатель на себя. Другими словами, при реализации функций-членов класса, мы работаем с данными так, как будто они передаются через указатель this. Особенностью this является то, что он предоставляет встроенный не требующий объявления указатель. Другими словами, например, это то же самое, как если бы в классе Test неявно объявлялся закрытый член Test* const this. Заметим, что указатель this изменить нельзя. Обычно указатель this используется неявно, но в некоторых ситуациях желательно его явное использование, причем, использование this не отличается от использования любого другого указателя.

class Test

{

public:

Test(char b) //конструктор

{

c1=b;

c2=c1+1;

}

Test Increment() //функция увеличения

{

c1++;

c2++;

return (*this); //вернуть объект

}

Test* Where_Am_I() //функция возвращает адрес памяти где расположен наш объект

{

return this; //вернуть указатель на себя

}

private:

char c1,c2;

};

void main()

{

Test a('A'); //создадим экземпляр класса Test

Cout << "is at" << a.Where_Am_I() << endl; //узнаем где мы (т.е. выведем адреса памяти, где расположен наш объект)

a.Increment(); //вызываем функцию-член Increment()

}