рефераты конспекты курсовые дипломные лекции шпоры

Реферат Курсовая Конспект

Указатель this.

Указатель 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);//не нужна для данных стат. размещения

– Конец работы –

Эта тема принадлежит разделу:

Элементы класса секция private Секций м.б. несколько

Классы... Класс это определяемый пользователем тип это абстрактный тип он описывает... Данные класса их еще называют полями сравнить со структурой это характеристики объекта...

Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Указатель this.

Что будем делать с полученным материалом:

Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:

Все темы данного раздела:

Void show()const;
16) frac reduce (); //сокращение дроби _ Здесь пока заканчивается 1-ая часть fraction.h______________   //fractionR.cpp –

Frac operator -();
frac operator -(frac &); frac operator *(frac &); frac operator / (frac &)   Файл

Class VEC
{private: double *v; // указатель на вектор int ne; // длина вектора public: VEC(); /

Extern ofstream fo;
VEC::VEC():ne(0),v(NULL) {fo<<"VEC() n"; } VEC::VEC(int n) : ne(n), v(new double[n]) {fo<<

VEC a(5),b(5),c(5),d(5),e(7),f(7);
for(i=0;i<5;i++){a[i]=i;b[i]=i+1;c[i]=2*i;d[i]=0;} for(i=0;i<7;i++)e[i]=i; fo<<"a:"<<endl;

VEC a(5),b(5),c(5),d(5),e(7),f(7);
for(i=0;i<5;i++){a[i]=i;b[i]=i+1;c[i]=2*i;d[i]=0;} for(i=0;i<7;i++)e[i]=i; fo<<"a:"<<endl;

Хотите получать на электронную почту самые свежие новости?
Education Insider Sample
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Реклама
Соответствующий теме материал
  • Похожее
  • Популярное
  • Облако тегов
  • Здесь
  • Временно
  • Пусто
Теги