Перегрузка стандартных операторов. Способы перегрузки операторов. — КиберПедия 

Наброски и зарисовки растений, плодов, цветов: Освоить конструктивное построение структуры дерева через зарисовки отдельных деревьев, группы деревьев...

Семя – орган полового размножения и расселения растений: наружи у семян имеется плотный покров – кожура...

Перегрузка стандартных операторов. Способы перегрузки операторов.

2018-01-04 199
Перегрузка стандартных операторов. Способы перегрузки операторов. 0.00 из 5.00 0 оценок
Заказать работу

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

Нельзя переопределить операторы «?:», «&», «.», «,», «->»

Также нельзя переопределить приоритеты операторов.

1 способ.Ввидеметодакласса

class A {

bool operator<(const A& rsh) {…}

}

2 способ.Внешне

bool operator<(const A& lsh, const A& rsh) {…}

Перегрузка оператора ++

Префиксная:

A&operator++() {

increment();

return(*this);

}

Постфиксная:

const A operator++(int) {

A temp=*this;

increment;

 

returntemp;

}

Какие методы и операторы необходимы для использования типа в качстве параметра стандартного шаблонного контейнера?

 

 

Ключевые слова virtual и const

В теме переопределения методов есть одна маленькая деталь, связанная с ис-пользованием ключевого слова virtual. Подклассами могут переопределяться все методы суперкласса, но vitual метод надо делать, чтобы суперкласс знал, что наследники могут переопределить этот метод. Ключевое слово virtual размещается в начале объявления метода.

Чтобы переопределить метод, достаточно снова объявить его в определении подкласса точно так, как он был объявлен в суперклассе. Новое определение этого метода необходимо разместить в файле реализации подкласса.

#include <iostream>

class A {

public:

int virtual get() {return 1;}

};

 

class B: public A{

public:

int get() {return 2;}

};

 

int main(){

B b;

A* a=&b;

Map<int, int> s;

std::cout<<a->get();

system("pause");

return 0;

}

Выведет 2; если уберем virtual, то выведет 1

 

Ключевое слово const применяется для:

Создания констант

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

Использование const-ссылок
(Передавая функции ссылку, вы одним "выстрелом" убиваете сразу двух "зайцев": и копия не создается, и исходная переменная не будет подвергнута никаким случайным изменениям.)

Если ставим const перед «{» при перегрузке оператора, то это означает, что оператор будет работать только с константными объектами данного класса.

Что такое срезка?

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

Потеря переопределенных методов и данных подкласса называется расслоением.

A – родитель, B – ребенок. Aa=b. Тогда методы b не работают. Если A&a=b, то работают

Множественное наследование

Определить класс с несколькими родителями синтаксически очень легко. Для этого достаточно при объявлении имени класса перечислить все его суперклассы.

class Baz: public Foo, public Bar {

};

После перечисления нескольких родителей объект класса Bar будет обладать следующими характеристиками:

Объект класса Baz станет поддерживать public-методы и включать открытые члены данных обоих классов Foo и Bar.

Методы класса Baz будут иметь доступ к защищенным (protected) данным и методам обоих классов Foo и Bar.

Объект класса Baz можно привести либо к типу Foo, либо к типу Bar.

При создании нового объекта класса Baz будут автоматически вызваны конструкторы по умолчанию классов Foo и Bar, причем в порядке, в котором эти имена были перечислены в определении класса Baz.

При удалении объекта класса Baz будут автоматически вызваны деструкторы классов Foo и Bar, причем в порядке, обратном тому, в котором эти имена были перечислены в определении класса Baz.


 

Исключения


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

Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...

Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ - конструкции, предназначен­ные для поддерживания проводов на необходимой высоте над землей, водой...

Типы сооружений для обработки осадков: Септиками называются сооружения, в которых одновременно происходят осветление сточной жидкости...

Папиллярные узоры пальцев рук - маркер спортивных способностей: дерматоглифические признаки формируются на 3-5 месяце беременности, не изменяются в течение жизни...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.022 с.