Реферат Курсовая Конспект
Указатель this. - раздел Информатика, Элементы класса секция private Секций м.б. несколько Каждый Объект Содержит Свой Экземпляр Полей Класса. Методы Класса Находятся В...
|
Каждый объект содержит свой экземпляр полей класса. Методы класса находятся в памяти в единственном экземпляре и используются всеми объектами совместно. Каждый раз, когда некоторый объект использует метод, необходимо, чтобы этот метод использовал внутри себя поля именно того объекта, который этот метод вызвал. Это обеспечивается передачей в функции-методы скрытого параметра this – это указатель на вызвавший функцию объект, он используется внутри метода для ссылок на элементы объекта. В явном виде этот указатель используется для возвращения из метода указателя (return this;) или ссылки на вызвавший объект (return *this;)
// fractiongl.cpp 3-ий файл Главная программа
#include "fraction.h"
ofstream fout;
int main()
{fout.open("res1.txt”); if(fout.fail()){cout<<"oshibka res1.txt";return 2;}
fout<<” frac ff;”<<endl;
frac ff;
fout<<” frac a(2,4),b(2,3);”<<endl;
frac a(2,4),b(2,3);
fout<<” a.show();”<<endl;
a.show();
fout<<” frac c(4,3),d(2,5);”<<endl;
frac c(4,3),d(2,5);
fout<<” frac x,t;”<<endl;
frac x,t;
fout.close();
return 0;
}
Файл res1.txt (1 часть)
frac ff;
frac()={0/1}
frac a(2,4),b(2,3);
Do reduce()...
Reduce()={1/2}
frac (const frac &[{1/2}])={1/2}
Destructor ~frac() for {1/2}
frac (int a, unsigned int b)
Do reduce()...
Reduce()={2/3}
frac (const frac &[{2/3}])={2/3}
Destructor ~frac() for {2/3}
frac (int a, unsigned int b)
a.show();
{1/2}
show()
frac c(4,3),d(2,5);
Do reduce()...
Reduce()={4/3}
frac (const frac &[{4/3}])={4/3}
Destructor ~frac() for {4/3}
frac (int a, unsigned int b)
Do reduce()...
Reduce()={2/5}
frac (const frac &[{2/5}])={2/5}
Destructor ~frac() for {2/5}
frac (int a, unsigned int b)
frac x,t;
frac()={0/1}
frac()={0/1}
____________________________________-
Файлfraction.h – интерфейсный файл класса (продолжение 1)
//некоторые функции (возможные варианты сложения дробей )
17) void addfrac(frac &a, frac &b);
18) frac addfrac (frac &a);
Файл fractionR.cpp – файл реализации (продолжение 1)
17) void frac::addfrac(frac &a,frac &b)
{ fout<<"Do addfrac(frac &["<<a<<"],frac &["<<b<<"])..."<<endl;
p=a.p*b.q+a.q*b.p;q=a.q*b.q;
fout<<"Result={"<<p<<'/'<<q<<"}"<<endl;
reduce(); //p, q, reduce() относятся к объекту, для которого
} // вызвана функция
-------------------------------------------------------------------------------------
Раньше было:
frac frac::addfrac(frac &a,frac &b)
{ fout<<"Do addfrac(frac &["<<a<<"],frac &["<<b<<"])..."<<endl;
p=a.p*b.q+a.q*b.p;q=a.q*b.q;
fout<<"Result={"<<p<<'/'<<q<<"}"<<endl;
reduce(); //p, q, reduce() относятся к объекту, для которого
return *this;} // вызвана функция
//x=p3.addfrac(p1,p2);
Do addfrac(frac &[{2/3}],frac &[{4/3}])...
Result={18/9}
Do reduce()...
Reduce()={2/1}
frac (const frac &[{2/1}])={2/1}
Destructor ~frac() for {2/1}
//p3.show();
{2/1}
___________________________________________________
18) frac frac::addfrac (frac &a) //сумма вычисляется путем
{return frac(p*a.q+a.p*q,q*a.q); } // сложения 2-х дробей: 1- к
// которой применяется метод,
//2-я –параметр функции
Файл fractiongl.cpp (продолжение 1)
Вызов 17) функции x.addfrac(b,c); //2/3 +4/3 =2/1
x.show();
Do addfrac(frac &[{2/3}],frac &[{4/3}])...
Result={18/9}
Do reduce()...
Reduce()={2/1}
Вызов 18) функции :x=b.addfrac(c) ; //2/3 +4/3 =2/1
x.show();
Do reduce()...
Reduce()={2/1}
frac (int a, unsigned int b)
Destructor ~frac() for {2/1}
___________________________________________________
Файлfraction.h – интерфейсный файл класса (продолжение 2)
Гораздо удобнее перегрузка операции для объекта класса, она выглядит так:
тип operator операция (список параметров) {тело функции}
При перегрузке операции сохраняются количество аргументов, приоритеты операций и правила ассоциации, не переопределяются для стандартных типов данных. Функция-операция может быть либо методом класса, либо дружественной функцией класса, либо обычной функцией, хотя бы один аргумент д.б. типа класса, указателя либо ссылки на класс.
frac operator +(frac &); //x=a+b;
bool operator <(frac &);
frac& operator=(frac);//не нужна для данных стат. размещения
– Конец работы –
Эта тема принадлежит разделу:
Классы... Класс это определяемый пользователем тип это абстрактный тип он описывает... Данные класса их еще называют полями сравнить со структурой это характеристики объекта...
Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Указатель this.
Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:
Твитнуть |
Новости и инфо для студентов