VVedite razmernost prostrantva 2



VVedite kolichestvo tochek 3
VVedite koordinati 0 tochki
0 0
VVedite koordinati 1 tochki
1 1
VVedite koordinati 2 tochki
2 2
VVedite razmernost prostrantva 3 4
VVedite kolichestvo tochek VVedite koordinati 0 tochk
0 0 0
VVedite koordinati 1 tochki
1 1 1
VVedite koordinati 2 tochki
2 2 2
VVedite koordinati 3 tochki
3 3 3
VVedite razmernost prostrantva 2
VVedite kolichestvo tochek 2
VVedite koordinati 0 tochki
0 0
VVedite koordinati 1 tochki
1 1
0 1 2
0 1 2
max =2.82843 nomera 0 2
min =1.41421 nomera 0 1
0 1 2 3
0 1 2 3
0 1 2 3
max =5.19615 nomera 0 3
min =1.73205 nomera 0 1
0 1
0 1
max =1.41421 nomera 0 1
min =1.41421 nomera 0 1
delete object !!!
delete object!!!
delete object!!!
Press any key to continue

Динамический массив объектов класса

Для создания динамического массива объектов несколько изменим главную функцию.

void main()
{
int m,m1;
cout<<"m1=";cin>>m1;
prostr *x;
x=new prostr[m1];
for(m=0;m<m1;m++)
{
x[m].poisk_max();
x[m].poisk_min();
x[m].vivod_result();
x[m].delete_a();
}
}

Указатель this

При создании в программе переменной(объекта) типа class, формируется указатель this, в котором хранится адрес этой переменной. Указатель this выступает в виде указателя на текущий объект.

Перегрузка операций (операторов)

В С++ могут перегружаться не только функции, но и операторы (операции). При перегрузке операторов следует помнить следующее:

1. Нельзя изменить приоритет операторов.

2. Нельзя изменить тип оператора из унарного оператора нельзя сделать бинарный и наоборот.

3. Перегруженный оператор является членом класса и может использоваться только в выражениях с объектами своего класса.

4. Нельзя создавать новые операторы.

5. Запрещено перегружать операторы : .(доступ к членам класса), *(значение по адресу указателя), ::(расширение области видимости) , ?: (операция if).

6. Допустима перегрузка следующих операторов: +, -, *, /, %, =, <, >, +=, -=, *=, /=, <, >, &&, ||, ++, --, (), [], new, delete.

Для перегрузке бинарного оператора внутри класса должна быть строка
type operator symbols(type1 parametr)
здесь
type - тип возвращаемого оператором значения,
operator - служебное слово,
symbols - перегружаемый оператор,
type - тип второго операнда, первым операндом является экземпляр класса.
parametr - имя переменной второго операнда.
В качестве примера рассмотрим класс complex с переопределенными операндами +(сложение комплексных чисел), -(вычитание комплексных чисел).
#include <iostream.h>
class complex {
public:
complex(bool pr=true);
complex operator+(complex M);
complex operator-(complex M)
{
complex temp(false);
temp.x=x-M.x;
temp.y=y-M.y;
return temp;
};
float x;
float y;
void show_complex();
};
int main()
{
complex chislo1, chislo2, chislo4(false), chislo3(false);
chislo3=chislo1+chislo2;
cout<<"chislo3=";
chislo3.show_complex();
chislo4=chislo1-chislo2;
cout<<"chislo4=";
chislo4.show_complex();

return 1;
}
complex::complex(bool pr)
{
if (pr)
{
cout<<"VVedite x\t";
cin>>x;
cout<<"Vvedite y\t";
cin>>y;
show_complex();
}
else{x=0;y=0;}
}
void complex::show_complex()
{
if (y>=0) cout<<x<<"+"<<y<<"i"<<endl;
else cout<<x<<y<<"i"<<endl;
}
complex complex::operator+(complex M)
{
complex temp(false);
temp.x=x+M.x;
temp.y=y+M.y;
//x=x+M.x;
//y=y+M.y;
return temp;
}

Рассмотрим пример перегрузки унарного оператора ++ для комплексных чисел, пусть ++complex увеличивает мнимую часть числа, а complex++ увеличивает действительную часть числа.
#include "stdafx.h"
#include <iostream.h>
class complex {
public:
complex(bool pr=true);
complex operator++()
{
// Реализует ++x
y++;
return *this;
}
complex operator++(int)
{
// Реализует x++
x++;
return *this;
}
float x;
float y;
void show_complex();
};
int main()
{
complex chislo2;
++chislo2;
cout<<"++chislo2=";
chislo2.show_complex();
chislo2++;
cout<<"chislo2++=";
chislo2.show_complex();
return 1;
}
complex::complex(bool pr)
{
if (pr)
{
cout<<"VVedite x\t";
cin>>x;
cout<<"Vvedite y\t";
cin>>y;
show_complex();
}
else{x=0;y=0;}

}
void complex::show_complex()
{
if (y>=0) cout<<x<<"+"<<y<<"i"<<endl;
else cout<<x<<y<<"i"<<endl;
}
Результаты работы программы
VVedite x 4
Vvedite y 5
4+5i
++chislo2=4+6i
chislo2++=5+6i
Press any key to continue

Статические члены классов и статические методы

Служебное слово static позволяет создавать статические члены и статические методы класса. Статические члены являются общими для всех экземпляров класса. Статические методы предназначены для обращения к статическим членам класса.

Наследование

Одной из основных особенностей ООП является наследование.

Наследование - это способ повторного использования программного обеспечения, при котором новые классы (наследники) создаются на базе уже существующих классов (родителей). При создании нового класса можно указать, что новый класса является наследником данных-элементов и функций-элементов ранее определенного базового класса. Это класс является производным (derived class), который в свою очередь может выступать в качестве базового класса (based class) для других классов.

При использовании наследования члены и методы кроме свойств public и private могут иметь свойство protected. Для одиночного класса описатели protected и private равносильны. Разница между protected и private проявляется при наследовании, защищенные члены и методы, объявленные в базовом классе, как protected, в производном могут использоваться, как публичные (public). Защищенные(protected) члены и методы являются чем-то промежуточным между public и private.

При создании производного класса используется следующий синтаксис.

class name_derived_class: type_inheritance base_class {

// приватные члены и методы класса

...
public:
// публичные члены и методы класса

...
protected:
// защищенные члены и методы класса

...
};
Здесь
name_derived_class - имя создаваемого производного класса,

type_inheritance - способ наследования, возможны следующие способы наследования public, private и protected.

base_class - имя базового типа.

Следует различать тип доступа к элементом в базовом классе и тип наследования (см. табл.)

Таблица


Дата добавления: 2019-09-13; просмотров: 196; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!