🗊Презентация ООП 2. Класс и Объект

Нажмите для полного просмотра!
ООП 2. Класс и Объект, слайд №1ООП 2. Класс и Объект, слайд №2ООП 2. Класс и Объект, слайд №3ООП 2. Класс и Объект, слайд №4ООП 2. Класс и Объект, слайд №5ООП 2. Класс и Объект, слайд №6ООП 2. Класс и Объект, слайд №7ООП 2. Класс и Объект, слайд №8ООП 2. Класс и Объект, слайд №9ООП 2. Класс и Объект, слайд №10ООП 2. Класс и Объект, слайд №11ООП 2. Класс и Объект, слайд №12ООП 2. Класс и Объект, слайд №13ООП 2. Класс и Объект, слайд №14ООП 2. Класс и Объект, слайд №15ООП 2. Класс и Объект, слайд №16ООП 2. Класс и Объект, слайд №17ООП 2. Класс и Объект, слайд №18ООП 2. Класс и Объект, слайд №19ООП 2. Класс и Объект, слайд №20ООП 2. Класс и Объект, слайд №21ООП 2. Класс и Объект, слайд №22ООП 2. Класс и Объект, слайд №23ООП 2. Класс и Объект, слайд №24ООП 2. Класс и Объект, слайд №25ООП 2. Класс и Объект, слайд №26ООП 2. Класс и Объект, слайд №27ООП 2. Класс и Объект, слайд №28ООП 2. Класс и Объект, слайд №29ООП 2. Класс и Объект, слайд №30ООП 2. Класс и Объект, слайд №31ООП 2. Класс и Объект, слайд №32

Содержание

Вы можете ознакомиться и скачать презентацию на тему ООП 2. Класс и Объект. Доклад-сообщение содержит 32 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1





Класс и Объект

Класс - принципиально новый тип данных. 
Класс представляет собой множество объектов
-имеющих общую структуру 
-обладающих одинаковым поведением. 
Класс  является дальнейшим развитием типа структура (запись)
Описание слайда:
Класс и Объект Класс - принципиально новый тип данных. Класс представляет собой множество объектов -имеющих общую структуру -обладающих одинаковым поведением. Класс является дальнейшим развитием типа структура (запись)

Слайд 2





 
Объект является представителем (экземпляром) какого-либо класса. 
Объект обладает 
состоянием 
поведением
идентичностью. 
Состояние объекта характеризуется
 набором его свойств (атрибутов) 
 текущими значениями каждого из этих свойств.
Поведение объекта - выполнения определенной последовательности характерных для него действий.
Идентичность объекта – это свойство (или набор свойств) объекта, которое позволяет отличить его от всех прочих объектов того же типа (класса).
Описание слайда:
Объект является представителем (экземпляром) какого-либо класса. Объект обладает состоянием поведением идентичностью. Состояние объекта характеризуется набором его свойств (атрибутов) текущими значениями каждого из этих свойств. Поведение объекта - выполнения определенной последовательности характерных для него действий. Идентичность объекта – это свойство (или набор свойств) объекта, которое позволяет отличить его от всех прочих объектов того же типа (класса).

Слайд 3







Oбъект объединяет в себе как описывающие его данные (свойства), так и средства обработки этих данных (методы).
Если объект — это “существительное”, свойства объекта — “прилагательные”, методы — “глаголы”.
Описание слайда:
Oбъект объединяет в себе как описывающие его данные (свойства), так и средства обработки этих данных (методы). Если объект — это “существительное”, свойства объекта — “прилагательные”, методы — “глаголы”.

Слайд 4





Управление доступом
Ключи доступа		
private		- элементы данных могут использоваться только 		               	 функциями-методами класса, к которому 	принадлежат эти элементы данных	
public		- элементы данных могут использоваться 			                   любыми функциями программы	
protected	 - элементы данных могут использоваться 			    функциями-методами того же класса, к которому 		    принадлежат эти элементы данных, а также 			     функциями-	методами производных классов 		                     (классов-потомков)	
По умолчанию ключ доступа private. Т.е. если ключи доступа не указаны, то все элементы класса являются скрытыми (недоступными). 
Попытка обратиться в программе к скрытым данным или методам вызывает сообщение:
<имя элемента класса>   is not accessible
Описание слайда:
Управление доступом Ключи доступа private - элементы данных могут использоваться только функциями-методами класса, к которому принадлежат эти элементы данных public - элементы данных могут использоваться любыми функциями программы protected - элементы данных могут использоваться функциями-методами того же класса, к которому принадлежат эти элементы данных, а также функциями- методами производных классов (классов-потомков) По умолчанию ключ доступа private. Т.е. если ключи доступа не указаны, то все элементы класса являются скрытыми (недоступными). Попытка обратиться в программе к скрытым данным или методам вызывает сообщение: <имя элемента класса> is not accessible

Слайд 5





 
Имя_класса с этого момента становится новым именем типа данных, которое используется для объявления объектов класса. 
Члены класса - это переменные состояния и методы этого класса, иными словами членами класса могут быть как переменные, так и функции. Функции и переменные, объявленные внутри объявления класса, становятся членами этого класса. Функции-члены класса будем называть методами этого класса. 
По умолчанию, все функции и переменные, объявленные в классе, становятся закрытыми (private) . Т.е. они доступны только из других членов этого класса. Для объявления открытых членов класса используется ключевое слово public. Все функции-методы и переменные, объявленные после слова public, доступны и для других членов класса, и для любой другой части программы, в которой содержится класс. В структурах по умолчанию все члены являются отрытыми.
Описание слайда:
Имя_класса с этого момента становится новым именем типа данных, которое используется для объявления объектов класса. Члены класса - это переменные состояния и методы этого класса, иными словами членами класса могут быть как переменные, так и функции. Функции и переменные, объявленные внутри объявления класса, становятся членами этого класса. Функции-члены класса будем называть методами этого класса. По умолчанию, все функции и переменные, объявленные в классе, становятся закрытыми (private) . Т.е. они доступны только из других членов этого класса. Для объявления открытых членов класса используется ключевое слово public. Все функции-методы и переменные, объявленные после слова public, доступны и для других членов класса, и для любой другой части программы, в которой содержится класс. В структурах по умолчанию все члены являются отрытыми.

Слайд 6





Данные примеры аналогичны:
struct _3d
{
 double mod ();
 double projection (_3d r);
private:
 double x, y, z;
};
Описание слайда:
Данные примеры аналогичны: struct _3d {  double mod ();  double projection (_3d r); private:  double x, y, z; };

Слайд 7





 
Для определения метода - члена класса, нужно связать имя класса, частью которого является метод, с именем класса. Это достигается путем написания имени функции вслед за именем класса с двумя двоеточиями. Два двоеточия называют операцией расширения области видимости.
double _3d::mod ()
{
 return sqrt (x*x + y*y +z*z);
} 
double _3d::projection (_3d r)
{
 return (x*r.x + y*r.y + z*r.z) / mod();
} 
...
main()
{
 _3d a, b;
 double dPro, dMod;
 dMod = a.mod();
 dPro = b.projection(a);
}
Описание слайда:
Для определения метода - члена класса, нужно связать имя класса, частью которого является метод, с именем класса. Это достигается путем написания имени функции вслед за именем класса с двумя двоеточиями. Два двоеточия называют операцией расширения области видимости. double _3d::mod () {  return sqrt (x*x + y*y +z*z); } double _3d::projection (_3d r) {  return (x*r.x + y*r.y + z*r.z) / mod(); } ... main() {  _3d a, b;  double dPro, dMod;  dMod = a.mod();  dPro = b.projection(a); }

Слайд 8





Инкапсуляция (encapsulation)
объединение производного типа данных с набором функций, используемых при работе с этим типом данных, в единый класс.  
Функции, включенные в класс, называют методами класса
Данные – элементами или полями класса, 
Конкретные представители класса – объекты, экземпляры.  
Класс (объект) - это то, что поддерживает инкапсуляцию

Инкапсуляция позволяет сделать класс «самодостаточным» для решения конкретной задачи. 
Класс всегда несет в себе некоторую функциональность. 
Это мощное средство обмена готовыми к работе программными заготовками
Описание слайда:
Инкапсуляция (encapsulation) объединение производного типа данных с набором функций, используемых при работе с этим типом данных, в единый класс. Функции, включенные в класс, называют методами класса Данные – элементами или полями класса, Конкретные представители класса – объекты, экземпляры. Класс (объект) - это то, что поддерживает инкапсуляцию Инкапсуляция позволяет сделать класс «самодостаточным» для решения конкретной задачи. Класс всегда несет в себе некоторую функциональность. Это мощное средство обмена готовыми к работе программными заготовками

Слайд 9





Инкапсуляция и ограничение доступа к данным
Инкапсуляция предполагает возможность ограничения доступа к данным (полям) класса. 
Это позволяет 
упростить интерфейс класса, показав наиболее существенные для внешнего пользователя данные и методы. 
обеспечить возможность внесения изменений в реализацию класса без изменения других классов (важно для дальнейшего сопровождения и модернизации программного кода). 
При сокрытии полей объекта доступ к ним осуществляется только посредством методов класса. Это защищает данные от внешнего вмешательства или неправильного использования (“чёрный ящик”)
Описание слайда:
Инкапсуляция и ограничение доступа к данным Инкапсуляция предполагает возможность ограничения доступа к данным (полям) класса. Это позволяет упростить интерфейс класса, показав наиболее существенные для внешнего пользователя данные и методы. обеспечить возможность внесения изменений в реализацию класса без изменения других классов (важно для дальнейшего сопровождения и модернизации программного кода). При сокрытии полей объекта доступ к ним осуществляется только посредством методов класса. Это защищает данные от внешнего вмешательства или неправильного использования (“чёрный ящик”)

Слайд 10





Перегружаемые операторы
struct _3d
{
 double x, y, z; // координаты
 _3d operator + (_3d);
};
_3d _3d::operator + (_3d b)
{
 _3d c;
 c.x = x + b.x;
 c.y = y + b.y;
 c.z = z + b.z;
 return c;
}
Описание слайда:
Перегружаемые операторы struct _3d {  double x, y, z; // координаты  _3d operator + (_3d); }; _3d _3d::operator + (_3d b) {  _3d c;  c.x = x + b.x;  c.y = y + b.y;  c.z = z + b.z;  return c; }

Слайд 11





Ограничения на замещение операторов по сравнению с замещением функций:
оператор должен уже существовать в языке (нельзя добавлять совершенно новые, выдуманные вами операторы); 
нельзя переопределять действия встроенных в С++ операторов при работе со встроенными типами данных; так, нельзя изменить способ работы оператора "+" при сложении целых чисел; 
запрещено замещать операторы ".", ".*", "?:", "::" и символы препроцессора "#".
Описание слайда:
Ограничения на замещение операторов по сравнению с замещением функций: оператор должен уже существовать в языке (нельзя добавлять совершенно новые, выдуманные вами операторы); нельзя переопределять действия встроенных в С++ операторов при работе со встроенными типами данных; так, нельзя изменить способ работы оператора "+" при сложении целых чисел; запрещено замещать операторы ".", ".*", "?:", "::" и символы препроцессора "#".

Слайд 12





Встраиваемые функции
inline _3d _3d::operator + (_3d b)
{
 _3d c;
 c.x = x + b.x;
 c.y = y + b.y;
 c.z = z + b.z;
 return c;
}
Описание слайда:
Встраиваемые функции inline _3d _3d::operator + (_3d b) {  _3d c;  c.x = x + b.x;  c.y = y + b.y;  c.z = z + b.z;  return c; }

Слайд 13





 
Используется для простых и коротких методов, которые в дальнейшем не предполагается изменять. 
struct _3d
{
 double x, y, z;
 double mod () {return sqrt (x*x + y*y +z*z);}
 double projection (_3d r) {return (x*r.x + y*r.y + z*r.z) / mod();}
 _3d operator + (_3d b);
};
Описание слайда:
Используется для простых и коротких методов, которые в дальнейшем не предполагается изменять. struct _3d {  double x, y, z;  double mod () {return sqrt (x*x + y*y +z*z);}  double projection (_3d r) {return (x*r.x + y*r.y + z*r.z) / mod();}  _3d operator + (_3d b); };

Слайд 14





С точки зрения ООП такой стиль программирования должен быть признан ошибочным:
_3d vectorA;
double m;
vectorA.x = 17.56;
vectorA.y = 35.12;
vectorA.z = 1.0;
m = vectorA.mod();
Описание слайда:
С точки зрения ООП такой стиль программирования должен быть признан ошибочным: _3d vectorA; double m; vectorA.x = 17.56; vectorA.y = 35.12; vectorA.z = 1.0; m = vectorA.mod();

Слайд 15





 
class _3d
{
      double x, y, z;
public:
 double mod () {return sqrt (x*x + y*y +z*z);}
 double projection (_3d r) {return (x*r.x + y*r.y + z*r.z) / mod();}
 void set (double newX, double newY, double newZ)
 {
  x = newX; y = newY; z = newZ;
 }
 _3d operator + (_3d b);
};
Описание слайда:
class _3d {   double x, y, z; public:  double mod () {return sqrt (x*x + y*y +z*z);}  double projection (_3d r) {return (x*r.x + y*r.y + z*r.z) / mod();}  void set (double newX, double newY, double newZ)  {   x = newX; y = newY; z = newZ;  }  _3d operator + (_3d b); };

Слайд 16





Конструкторы и деструкторы

	С++ дает возможность создать метод, который будет автоматически вызываться для инициализации объекта данного типа при его создании. Такой метод называется конструктором. Конструктор определяет, как будет создаваться новый объект, когда это необходимо, может распределить под него память и инициализировать ее. Он может включать в себя код для распределения памяти, присваивание значений элементам, преобразование из одного типа в другой и многое полезное.
	Конструкторы в языке С++ имеют имена, совпадающие с именем класса. Конструктор может быть определен пользователем, или компилятор сам сгенерирует конструктор по умолчанию. Конструктор может вызываться явно, или неявно. Компилятор сам автоматически вызывает соответствующий конструктор там, где Вы определяете новый объект класса. Конструктор не возвращает никакое значение, и при описании конструктора не используется ключевое слово void.
	Функцией, обратной конструктору, является деструктор. Эта функция обычно вызывается при удалении объекта. Например, если при создании объекта для него динамически выделялась память, то при удалении объекта ее нужно освободить. Локальные объекты удаляются тогда, когда они выходят из области видимости. Глобальные объекты удаляются при завершении программы. 
	В языке С++ деструкторы имеют имена: "~имя_класса". Как и конструктор, деструктор не возвращает никакое значение, но в отличие от конструктора не может быть вызван явно. Конструктор и деструктор не могут быть описаны в закрытой части класса.
Описание слайда:
Конструкторы и деструкторы С++ дает возможность создать метод, который будет автоматически вызываться для инициализации объекта данного типа при его создании. Такой метод называется конструктором. Конструктор определяет, как будет создаваться новый объект, когда это необходимо, может распределить под него память и инициализировать ее. Он может включать в себя код для распределения памяти, присваивание значений элементам, преобразование из одного типа в другой и многое полезное. Конструкторы в языке С++ имеют имена, совпадающие с именем класса. Конструктор может быть определен пользователем, или компилятор сам сгенерирует конструктор по умолчанию. Конструктор может вызываться явно, или неявно. Компилятор сам автоматически вызывает соответствующий конструктор там, где Вы определяете новый объект класса. Конструктор не возвращает никакое значение, и при описании конструктора не используется ключевое слово void. Функцией, обратной конструктору, является деструктор. Эта функция обычно вызывается при удалении объекта. Например, если при создании объекта для него динамически выделялась память, то при удалении объекта ее нужно освободить. Локальные объекты удаляются тогда, когда они выходят из области видимости. Глобальные объекты удаляются при завершении программы. В языке С++ деструкторы имеют имена: "~имя_класса". Как и конструктор, деструктор не возвращает никакое значение, но в отличие от конструктора не может быть вызван явно. Конструктор и деструктор не могут быть описаны в закрытой части класса.

Слайд 17





 
class _3d 
{
 double x, y, z;
public:
 _3d();
 ~_3d()
 {
  cout << 'Работа деструктора _3d \n';
 }
 double mod () {return sqrt (x*x + y*y +z*z);}
 double projection (_3d r) {return (x*r.x + y*r.y + z*r.z) / mod();}
 void set (double newX, double newY, double newZ)
 {
  x = newX; y = newY; z = newZ;
 }
 };
_3d::_3d() // конструктор класса _3d
{
	 x=y=z=0;
 cout << 'Работа конструктора _3d \n';
}
Описание слайда:
class _3d {  double x, y, z; public:  _3d();  ~_3d()  {   cout << 'Работа деструктора _3d \n';  }  double mod () {return sqrt (x*x + y*y +z*z);}  double projection (_3d r) {return (x*r.x + y*r.y + z*r.z) / mod();}  void set (double newX, double newY, double newZ)  {   x = newX; y = newY; z = newZ;  }  }; _3d::_3d() // конструктор класса _3d {  x=y=z=0;  cout << 'Работа конструктора _3d \n'; }

Слайд 18





Конструкторы с параметрами и перегрузка конструкторов

class _3d 
{
 double x, y, z;
public:
 _3d ();
 _3d (double initX, double initY, double initZ);
 ...
};
_3d::_3d(double initX, double initY, double initZ)
//конструктор класса _3d с параметрами
{
 x = initX;
 y = initY;
 z = initZ;
 cout << 'Работа конструктора _3d \n'; 
}
Описание слайда:
Конструкторы с параметрами и перегрузка конструкторов class _3d {  double x, y, z; public:  _3d ();  _3d (double initX, double initY, double initZ);  ... }; _3d::_3d(double initX, double initY, double initZ) //конструктор класса _3d с параметрами {  x = initX;  y = initY;  z = initZ;  cout << 'Работа конструктора _3d \n'; }

Слайд 19





Присваивание объектов

class ClassName1
{
 int a, b;
public:
 void set (int ia, int ib) {a=ia; b=ib;}
};
class ClassName2
{
 int a, b;
public:
 void set (int ia, int ib) {a=ia; b=ib;}
};
Описание слайда:
Присваивание объектов class ClassName1 {  int a, b; public:  void set (int ia, int ib) {a=ia; b=ib;} }; class ClassName2 {  int a, b; public:  void set (int ia, int ib) {a=ia; b=ib;} };

Слайд 20





 
class Pair
{
 int a, *b;
public:
 void set (int ia, int ib) {a=ia; *b=ib;}
 int getb (){return *b;}
 int geta (){return a;}
};
main()
{
 Pair c1,c2;
 c1.set(10,11);
 c2 = c1;
 c1.set(100,111);
 cout << 'с2.b = '<< c2.getb();
}
Описание слайда:
class Pair {  int a, *b; public:  void set (int ia, int ib) {a=ia; *b=ib;}  int getb (){return *b;}  int geta (){return a;} }; main() {  Pair c1,c2;  c1.set(10,11);  c2 = c1;  c1.set(100,111);  cout << 'с2.b = '<< c2.getb(); }

Слайд 21





Перегруженный оператор присваивания
class _3d 
{
 double x, y, z;
public:
 _3d ();
 _3d (double initX, double initY, double initZ);
 double mod () {return sqrt (x*x + y*y +z*z);}
 double projection (_3d r) {return (x*r.x + y*r.y + z*r.z) / mod();}
 _3d operator + (_3d b); 
 _3d operator = (_3d b);
};
_3d _3d::operator = (_3d b)
{
x = b.x;
y = b.y;
z = b.z;
return *this;
}
Описание слайда:
Перегруженный оператор присваивания class _3d {  double x, y, z; public:  _3d ();  _3d (double initX, double initY, double initZ);  double mod () {return sqrt (x*x + y*y +z*z);}  double projection (_3d r) {return (x*r.x + y*r.y + z*r.z) / mod();}  _3d operator + (_3d b);  _3d operator = (_3d b); }; _3d _3d::operator = (_3d b) { x = b.x; y = b.y; z = b.z; return *this; }

Слайд 22





Передача в функции и возвращение объекта

class ClassName
{
public:
 ClassName ()
 {
  cout << 'Работа конструктора \n';
 }
 ~ClassName ()
 {
  cout << 'Работа деструктора \n';
 }
};
void f (ClassName o)
{
 cout << 'Работа функции f \n';
}
main()
{
 ClassName c1;
 f (c1);
}
Описание слайда:
Передача в функции и возвращение объекта class ClassName { public:  ClassName ()  {   cout << 'Работа конструктора \n';  }  ~ClassName ()  {   cout << 'Работа деструктора \n';  } }; void f (ClassName o) {  cout << 'Работа функции f \n'; } main() {  ClassName c1;  f (c1); }

Слайд 23





 
class ClassName {
public:
 ClassName () 
 {
  cout << 'Работа конструктора \n';
 }
 ~ClassName () 
 {
  cout << 'Работа деструктора \n';
 }
};
ClassName f()
{
 ClassName obj;
 cout << 'Работа функции f \n';
 return obj;
} 
main()
{
 ClassName c1;
 c1 = f();
}
Описание слайда:
class ClassName { public:  ClassName ()  {   cout << 'Работа конструктора \n';  }  ~ClassName ()  {   cout << 'Работа деструктора \n';  } }; ClassName f() {  ClassName obj;  cout << 'Работа функции f \n';  return obj; } main() {  ClassName c1;  c1 = f(); }

Слайд 24





Конструктор копирования
Позволяет точно определить порядок создания копии объекта и имеет следующую форму:
имя_класса (const имя_класса & obj)
{
 ... // тело конструктора
}
Здесь obj - это ссылка на объект или адрес объекта. 
Замечание: конструктор копирования не влияет на операцию присваивания.
Описание слайда:
Конструктор копирования Позволяет точно определить порядок создания копии объекта и имеет следующую форму: имя_класса (const имя_класса & obj) {  ... // тело конструктора } Здесь obj - это ссылка на объект или адрес объекта. Замечание: конструктор копирования не влияет на операцию присваивания.

Слайд 25





Наследование (inheritance)
- это возможность определять новые классы посредством добавления полей, свойств и методов к уже существующим классам. 
Такой механизм получения новых классов называется порождением. 
При этом новый, порожденный, класс (потомок) наследует все поля, методы и свойства своего базового, родительского класса.
Наследование поддерживает концепцию иерархии классов (hierarchical classification). 
Применение иерархии классов делает управляемыми большие потоки информации. 
Наследование обеспечивает поэтапное создание сложных классов и разработку собственных библиотек классов
Описание слайда:
Наследование (inheritance) - это возможность определять новые классы посредством добавления полей, свойств и методов к уже существующим классам. Такой механизм получения новых классов называется порождением. При этом новый, порожденный, класс (потомок) наследует все поля, методы и свойства своего базового, родительского класса. Наследование поддерживает концепцию иерархии классов (hierarchical classification). Применение иерархии классов делает управляемыми большие потоки информации. Наследование обеспечивает поэтапное создание сложных классов и разработку собственных библиотек классов

Слайд 26





 
Класс, который наследуется, называется базовым классом. Наследующий класс называют производным классом.
Новый класс строится на базе уже существующего с помощью конструкции следующего вида:
	class Parent {....};
class Child : [модификатор наследования] Parent {....};
Описание слайда:
Класс, который наследуется, называется базовым классом. Наследующий класс называют производным классом. Новый класс строится на базе уже существующего с помощью конструкции следующего вида: class Parent {....}; class Child : [модификатор наследования] Parent {....};

Слайд 27





Модификатор наследования
Описание слайда:
Модификатор наследования

Слайд 28





 
Конструкторы и деструкторы при наследовании
	
	Если и у базового и у производного классов есть конструкторы и деструкторы, то конструкторы выполняются в порядке наследования, а деструкторы - в обратном порядке. 
	Т.е. если А базовый класс, В - производный из А, а С - производный из В (А-В-С), то при создании объекта класса С вызов конструкторов будет иметь следующий порядок: конструктор А - конструктор В - конструктор С. 
	Вызов деструкторов при разрушении этого объекта произойдет в обратном порядке:
 деструктор С - деструктор В - деструктор А.
Описание слайда:
Конструкторы и деструкторы при наследовании Если и у базового и у производного классов есть конструкторы и деструкторы, то конструкторы выполняются в порядке наследования, а деструкторы - в обратном порядке. Т.е. если А базовый класс, В - производный из А, а С - производный из В (А-В-С), то при создании объекта класса С вызов конструкторов будет иметь следующий порядок: конструктор А - конструктор В - конструктор С. Вызов деструкторов при разрушении этого объекта произойдет в обратном порядке: деструктор С - деструктор В - деструктор А.

Слайд 29





 
class BaseClass
{
public:
 BaseClass() {cout << ' Работа конструктора базового класса \n';}
 ~BaseClass() {cout << ' Работа деструктора базового класса \n';}
};
class DerivedClass: public BaseClass
{
public:
 DerivedClass() {cout << ' Работа конструктора производного класса \n';}
 ~DerivedClass() {cout << ' Работа деструктора производного класса \n';}
};
main()
{
 DerivedClass obj;
}
Описание слайда:
class BaseClass { public:  BaseClass() {cout << ' Работа конструктора базового класса \n';}  ~BaseClass() {cout << ' Работа деструктора базового класса \n';} }; class DerivedClass: public BaseClass { public:  DerivedClass() {cout << ' Работа конструктора производного класса \n';}  ~DerivedClass() {cout << ' Работа деструктора производного класса \n';} }; main() {  DerivedClass obj; }

Слайд 30





Расширенная запись конструктора производного класса
конструктор_производного_класса (список формальных параметров)
 : конструктор_базового_класса (список фактических параметров)
{
 ... // тело конструктора производного класса
}
Описание слайда:
Расширенная запись конструктора производного класса конструктор_производного_класса (список формальных параметров)  : конструктор_базового_класса (список фактических параметров) {  ... // тело конструктора производного класса }

Слайд 31





 
class BaseClass
{
 int i;
public:
 BaseClass (int ii) {i=ii;}
 ~BaseClass() {cout << ' Работа деструктора базового класса \n';}
};
class DerivedClass: public BaseClass
{
 int n;
public:
 DerivedClass (int nn, int m): BaseClass (m) {n=nn;}
 ~DerivedClass() {cout << ' Работа деструктора производного класса \n';}
};
main()
{
 DerivedClass obj(2,3);
}
Описание слайда:
class BaseClass {  int i; public:  BaseClass (int ii) {i=ii;}  ~BaseClass() {cout << ' Работа деструктора базового класса \n';} }; class DerivedClass: public BaseClass {  int n; public:  DerivedClass (int nn, int m): BaseClass (m) {n=nn;}  ~DerivedClass() {cout << ' Работа деструктора производного класса \n';} }; main() {  DerivedClass obj(2,3); }

Слайд 32





 
Допускается также, что конструктор базового класса может иметь больше параметров, чем конструктор производного класса. 
class BaseClass
{
 int j, i;
public:
 BaseClass (int jj, int ii) {j=jj; i=ii;}
 ~BaseClass() {cout << ' Работа деструктора базового класса \n';}
};
class DerivedClass: public BaseClass
{
 int n;
public:
 DerivedClass (int nn);
 ~DerivedClass() {cout << ' Работа деструктора производного класса \n';}
};
DerivedClass :: DerivedClass (int nn): BaseClass (nn/2, nn%2)
{ n=nn; }
main()
{
 DerivedClass obj(15);
}
Описание слайда:
Допускается также, что конструктор базового класса может иметь больше параметров, чем конструктор производного класса. class BaseClass {  int j, i; public:  BaseClass (int jj, int ii) {j=jj; i=ii;}  ~BaseClass() {cout << ' Работа деструктора базового класса \n';} }; class DerivedClass: public BaseClass {  int n; public:  DerivedClass (int nn);  ~DerivedClass() {cout << ' Работа деструктора производного класса \n';} }; DerivedClass :: DerivedClass (int nn): BaseClass (nn/2, nn%2) { n=nn; } main() {  DerivedClass obj(15); }



Похожие презентации
Mypresentation.ru
Загрузить презентацию