Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Указатель this



Конкретные переменные типа "класс" называются экземплярами класса, или объектами. Каждый объект содержит свой экземпляр полей класса. Методы класса находятся в памяти в единственном экземпляре и используются всеми объектами совместно, поэтому необходимо обеспечить работу методов с полями именно того объекта, для которого они были вызваны. Это обеспечивается передачей в функцию скрытого параметра this, в котором хранится константный указатель на вызвавший функцию объект. Указатель this неявно используется внутри метода для ссылок на элементы объекта. В явном виде этот указатель применяется в основном для возвращения из метода указателя (return this;) или ссылки (return *this;) на вызвавший объект.

ЗАДАЧА 3.1. Для иллюстрации использования указателя this добавим метод сложения в класс complex.

class complex //Определяем класс complex

{

//Закрытые поля класса и метод

double x;

double y;

void show_complex();

//Открытые методы

public:

void vvod();

complex add(complex a);

};

void complex::show_complex()

{

if (y>=0)

cout<<x<<"+"<<y<<"i"<<endl; // неявное использование указателя this

else cout<<x<<y<<"i"<<endl; // неявное использование указателя this

}

void complex::vvod()

{

cout<<"Vvedite x\t"; cin>>x; // неявное использование указателя this

cout<<"Vvedite y\t"; cin>>y; // неявное использование указателя this

}

complex complex:: add(complex a)

{

complex res;

res.x=x+a.x; // неявное использование указателя this

res.y=y+a.y; // неявное использование указателя this

return this; // явное использование указателя this

}

int main()

{

complex chislo1, chislo2;

chislo1.vvod(); chislo2.vvod();

cout<<"Summa kompleksnih chisel="<<chislo1.add(chislo2);

return 0;

}





Дата публикования: 2014-11-28; Прочитано: 240 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.007 с)...