Конструктор-копировщик.

В предложенной программе используются дополнительные возможности функций-членов — перегрузка, использование значений по умолчанию, использование нескольких конструкторов, в том числе и по умолчанию, перегрузка операторов = и +и конструктор –копировщик Копировщик, предоставляемый компилятором, осуществляет схему поверхностного копирования может привести к ошибкам в случае, если среди данных-членов класса имеется указатели.

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

Первая схема для глубинного копирования позволяет полностью скопировать все данные, а не только указатели.

 

 


Лекция № 7.Наследование Закрытый. Защищённый Форматированный ввод. Ввод-вывод в файл.

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

Наследование обозначает такое отношение между классами, когда один класс использует структурную или функциональную часть одного или нескольких классов (соответственно простое и множественное наследование).

Наследование является иерархической системой, позволяющей лучше выразить взаимодействия между классами. Иерархия представляет собой вид отношений подчинённости типа: принадлежности частного общему.

Когда мы говорим, что нечто является видом чего-либо, мы подразумеваем большую детализацию.

В С++ иерархичность реализована в концепции классов — когда один класс может наследовать или происходить от класса более высокого уровня. В наследовании классов реализуются принципы их иерархической подчинённости.

Если объявляется наследуемый класс, то базовый класс должен быть описан выше, иначе компилятор сгенерирует ошибку.

Синтаксис : (открытое наследование):

Class имя_класса :< режим доступа> имя_базового_класса.

В описании базового класса появляется новое слово:protected, так как данные под словом private не доступны для наследования.

Какой бы доступ не был определён для наследования данные, описанные в базовом классе как private не доступны для производного класса.


#include <iostream.h>

Class base

{ int x;

public:

void setx(int n){x=n;}

void prinx(){cout<<"x="<<x<<"\n";}

};

class deriv : private base

{

Int y;

public:

void setxy(int n,int m){setx(n);y=m;}

void prinxy(){prinx();cout<<"y="<<y<<"\n";}

};

Void main(void)

{

Deriv ob;

cout <<"результат работы программы: \n" ;

Ob.setxy(10,25);

Ob.prinxy();

}

результат работы программы:

x=10

y=25









Дата добавления: 2015-12-26; просмотров: 663;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

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

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.004 сек.