Ключевое слово this

Ключевое слово this

Ключевое слово this

 

При вызове функции – члена класса передается еще один неявный параметр – указатель на объект класса, который вызывает данную функцию. Этот указатель называется this.

Ключевое слово this используется, в частности, при перегрузке операций.

Как известно, функции-члены класса могут иметь доступ к private-членам их класса. Например,

 

class cl

{

int i;

}

 

Для данного класса функция – член класса может иметь оператор присваивания i=10. В действительности этот оператор является короткой записью оператора

 

this ->i=10;

 

Чтобы понять, как указатель this работает, рассмотрим следующую короткую программу:

 

// Ex17. Использование указателя this

#include <stdio.h>

#include <conio.h>

#include <iostream.h>

 

class cl

{

int i;

public:

void load_i (int val)

{

this->i = val;

}

int get_i (void)

{

return this->i;

}

};

 

void main (void)

{

cl c;

 

c.load_i(100);

cout << c.get_i();

 

getch();

}

 

 

 

 

 

Перегрузка операций

 

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

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

 

Основная форма записи функции-операции, являющейся функцией – членом класса:

 

Тип_возвр_знач имя_класса::operator # (список аргументов)

{

// операторы, определяющие действие

}

 

# – конкретный знак операции, Часто возвращаемое значение имеет тот же тип, что и класс, хотя возможен и другой тип этого значения. Функция операции должна быть или членом класса или дружественной функцией. Небольшие отличия в случае члена класса или дружественной функции имеются.

Рассмотрим на примере, как реализуется перегрузка операций. Рассмотрим программу, которая перегружает операции + и = относительно класса vectог. Класс vector определяет трехмерный вектор в евклидовом пространстве. Операция сложения двух векторов выполняется как сложение соответствующих координат:

 

// Ex 18. Перегрузка операций + и =

 

#include <stdio.h>

#include <conio.h>

#include <iostream.h>

 

class vector

{

int x, y, z;

public:

vector operator+ (vector t);

vector operator= (vector t);

void show(void);

void assign (int mx, int my, int mz);

};

 

vector vector::operator+ (vector t)

{

vector temp;

 

temp.x = x + t.x;

temp.y = y + t.y;

temp.

Комментарии к записи Ключевое слово this отключены

Рубрика: Программирование

Обсуждение закрыто.