Void main()
{
Second A; //Создание экземпляра
A.wwod_a();
A.wwod_b();
cout<<"sum=";
cout<<A.sum()<<"\n";
}
//р7_exmp3_9.cpp
//Прокофьева Д.С., группа 3270
//Наследование с конструктором
#include<iostream> //Библиотека класса
using namespace std; //Объявление класса
class Sun
{ public: //Открытый доступ
Sun(int m=1):n(m)
{a=new int[n];}
~Sun() {delete[]a;}
Void wwod();
void vyvod();
int out_n() {return n;}
int *out_a() {return a;}
int *a,
n;
};
void Sun::wwod()
{cout<<"Input mass \n";
for(int i=0;i<n;i++)
cin>>a[i];
}
void Sun::vyvod()
{cout<<"Output mass \n";
for(int i=0;i<n;i++)
cout<<a[i]<<"\t";
cout<<"\t";
}
class Earth:
public Sun //Базовый список
{
public:
Earth(int m=1):Sun(m) {}
int out_max(); //Вывод max значения
int xyz();
};
int Earth::out_max()
{
int len=out_n();
int *k=out_a();
int mx=a[0];
for(int i=1;i<n;i++)
if(mx<a[i])
mx=a[i];
return mx;
}
int Earth::xyz()
{
int len=out_n();
int *k=out_a();
int ch=0;
for(int i=0;i<n;i++)
if(ch<0)
ch++;
return ch;
}
Void main()
{ int j;
cout<<"Input \n";
cout<<"j=";
cin>>j;
Earth *A; //Указатель на экземпляр
A=new Earth(j);
A->wwod();
cout<<"\n Output";
A->vyvod();
cout<<"max="<<A->out_max()<<"\n";
cout<<"culc="<<A->xyz()<<"\n";
delete A; //Возвращение памяти
}
//р7_exmp3_10.cpp
//Прокофьева Д.С. группа 3270
//Полиморфизм
#include<iostream> //Библиотека класса
using namespace std; //Объявление класса
class Dh
{ public: //Открытый доступ
int a,
b;
Dh(int m,int n):a(m),b(n) {}
virtual void sss();
void eee();
};
void Dh::sss()
{cout<<"sum=";
cout<<a+b<<"\n";
}
void Dh::eee()
{cout<<"Output \n";
cout<<"a="<<a<<"\n";
cout<<"b="<<b<<"\n";
sss(); //Вызов метода
}
class Bg:
public Dh //Базовый список
{public:
Bg(int c, int d):Dh(c,d) {}
void sss(); //Вычисление произведения
};
void Bg::sss()
{ cout<<"prod=";
cout<<a+b<<"\n";
}
Void main()
{ Bg K(3,7); //Создание экземпряра
K.sss(); //Вызов метода
K.Dh::sss(); //Вызов метода вычисления суммы
}
//р7_exmp3_11.cpp
//Прокофьева Д.С. группа 3270
//Пример на ссылку
#include <iostream>
using namespace std;
//Функция, изменяющая значение фактического параметра
void incref(int &i)
{
i++;}
//Функция, возвращающая ссылку
int & valref(int &i) {return ++i;}
Void main()
{
int value=10;
//Псевдоним переменной
int & refval=value;
refval+=5; // Изменение value через ссылку
// Изменение параметров функции
cout <<value <<"/n";
incref(value);
cout <<value <<"/n";
cout <<& refval <<"/n";
//Функция, возвращающая значение типа ссылка
int j=6;
cout <<j<<"/n";
cout <<valref(j) <<"/n";
cout <<j <<"/n";
}
//р7_exmp3_12.cpp
//Прокофьева Д.С. группа 3270
//Пример на указатель this
#include<iostream>
using namespace std;
class Simple //Объявление класса
{
public:
Simple(); //Конструктор
void wert(int i){cout<<i<< "/n";}
};
//Определение конструктора
Simple::Simple()
{
wert(1);
this->wert(1);
(*this).wert(1);
}
//Везде организован вызов одного и того же метода
