Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Конкретные переменные типа "класс" называются экземплярами класса, или объектами. Каждый объект содержит свой экземпляр полей класса. Методы класса находятся в памяти в единственном экземпляре и используются всеми объектами совместно, поэтому необходимо обеспечить работу методов с полями именно того объекта, для которого они были вызваны. Это обеспечивается передачей в функцию скрытого параметра 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; Прочитано: 241 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!