Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Перегрузка операции инкремента и декрементаСодержание книги
Поиск на нашем сайте
Т.к. в С++ операции инкремента и декремента существуют в двух видах, а именно в префиксной и постфиксной формах, то при перегрузке нужно учесть этот фактор. Class Length {private: Double len; Length& operator++(); Const Length operator ++ (int); Length& operator -- (); Const Length operator -- (int); // остальная часть класса }; Первое, чем отличаются перегруженные формы операции – списками параметров. Префиксная форма не принимает параметр, а постфиксная принимает параметр типа int. Параметр в функции постфиксной операции служит для того, чтобы отличать ее от префиксной формы и никак не используется в реализации операции. Операции префиксного инкремента и декремента обрабатывают операнд перед тем, как его значение будет использовано в выражении, поэтому просто возвращается ссылка на текущий объект после того, как он будет увеличен или уменьшен. С постфиксной формой операнд увеличивается после того, как его текущее значение используется в выражении. Это достигается созданием копии текущего объекта перед выполнением самой операции. И возвратом этой копии после модификации объекта. Шаблоны классов
… пол пары пропуска … Пример, иллюстрирующий использование шаблона: Допустим, что нужно определить классы, которые могут хранить количество выборок данных некоторого вида. Каждый класс представляет функцию Max() для определения максимальной выборки. Template <class T> Class Samples { public: Samples (const T& Values [], int const) – конструктор, принимающий массив выборок. {Free=(count<100)?count:100; For (int i=0; i<Free, i++) Values[i]=values[i];}
Samples (const T& Value) – одну выборку {Values[0]=Value; Free=1;};
Sample(){Free=0;} – пустой конструктор по умолчанию
Bool Add (const T& value) {bool OK=Free<100; If(OK) Values[Free++]=value; return OK;}
T Max()const {T theMax=Free? Values[0]:0; For (int i=1; i<Free; i++) {if (Values[i]>theMax) theMax=Values[i]; Return theMax;}
Private: T Values[100]; int Free;};
Примечание: всегда можно определить шаблон, который работает только с некоторыми типами, а с другими не работает. Но нет способа ограничить типы, применимые с конкретным шаблоном.
Int main(){Box boxes[]={box(8.0,5.0,2.0), box(5.0,4.0,6.0), box(4.0,3.0,3.0);} Samples <Box>myboxes(boxes, size of boxes/size of boxes[0]) Cout<<endl<<”The Volume of the most bigger box is “<<myBoxes.Max()<<endl; Return 0;}
Если функция-член шаблона не вызывается, то даже если в ней содержатся ошибки, то программа будет компилироваться, пока она не будет вызвана.
Пропуски: 22.02 07.03 02.05 30.05
|
||||
|
Последнее изменение этой страницы: 2017-02-07; просмотров: 245; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.217.89 (0.009 с.) |