Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Bilety_infa_v_pechat_obnovleno.docx
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
153.37 Кб
Скачать

Билет 21. Билет 29.

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

 Когда вы определяете в своей программе класс, то по существу вы определяете новый тип. А если так, C++ позволяет вам определить операции, соответствующие этому новому типу. Перегрузка оператора состоит в изменении смысла оператора (например, оператора плюс (+), который обычно в C++ используется для сложения) при использовании его с определенным классом.

  • Переопределяя оператор, вы указываете функцию, которую C++ вызывает каждый раз, когда класс использует перегруженный оператор. Эта функция, в свою очередь, выполняет соответствующую операцию.

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

Операторы, которые нельзя перегружать:

.

Выбор элемента

.*

Указатель на элемент

::

Разрешение области видимости

?:

Условный оператор сравнения

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

Перегрузка операторов может упростить наиболее общие операции класса и улучшить читаемость программы.

Оператор в С++ - это некоторое действие или функция обозначенная специальным символом. Для того что бы распространять эти действия на новые типы данных, при этом сохраняя естественный синтаксис, в С++ была введена возможность перегрузки операторов.

Рассмотрим пример перегрузки операторов ввода/ вывода классов istream и ostream для упрощения формы записи ввода и вывода данных объекта класса person через объекты-потоки cin и cout.

// main.cpp

//

#include "person.h"

#include<iostream>

int main()

{ Person My1, My2("Nick",1989);

std::cout << "Enter Name, Year ->";

//использование перегруженного оператора ввода

std::cin >> My1;

// использование перегруженного оператора вывода

std::cout << My1;

std::cout<<My2;

return 0;}

// person.h

#include <iostream>

class person

{

char Name[20];

int Year;

public:

person(void);

~person(void);

person(char* N, int Y);

//Перегрузка ввода через объект класса istream (cin)

friend std::istream& operator>>(std::istream&, person&);

//Перегрузка вывода через объект класса ostream (cout)

friend std::ostream&operator<<(std::ostream&,person&); };

//person.cpp

#include ".\person.h"

#include<string.h>

//#include <iostream>

person::person(void)

{ }

person::~person(void)

{ }

person::person(char* N, int Y)

{ strcpy(Name, N);

Year=Y; }

std::istream&operator>>(std::istream& is, person& p)

{ char buf[20];

int Y;

std::cout << "Name->";

is>>buf;

strcpy(p.Name,buf);

std::cout << "Year->";

is >> Y;

p.Year = Y;

return is;

}

std::ostream& operator<<(std::ostream& os ,person& p)

{

os << "Name " << p.Name << " Year " << p.Year << std::endl;

return os;

}

Задание: НТМL. Вставить в один документ несколько картинок и сделать на них гиперссылки

<HTML>

<HEAD>

<TITLE>New</TITLE>

</HEAD>

<BODY>

<p>Этолес<img src="лес.jpg"></p>

<p> А это поле <img src="поле.jpg"></p>

<a href="лес.jpg">Лес</a><BR>

<a href="поле.jpg">Поле</a><BR>

</BODY>

</HTML>

Задание: НТМL. . Вставить в 2 документа таблицы. В третьем сделать на них гиперссылки

1.htm <HTML>

<HEAD>

<TITLE>1</TITLE>

</HEAD>

<BODY>

<TABLE BORDER>

<TR>

<TD>Ячейка 1 строки 1</TD>

<TD>Ячейка 2 строки 1</TD>

</TR>

<TR>

<TD>Ячейка 1 строки 2</TD>

<TD>Ячейка 2 строки 2</TD>

</TR>

</TABLE>

</BODY>

</HTML>

2.htm

<HTML>

<HEAD>

<TITLE>2</TITLE>

</HEAD>

<BODY>

<TABLE BORDER>

<TR>

<TD>Ячейка 1 строки 1</TD>

<TD>Ячейка 2 строки 1</TD>

</TR>

<TR>

<TD>Ячейка 1 строки 2</TD>

<TD>Ячейка 2 строки 2</TD>

</TR>

</TABLE>

</BODY>

</HTML>

3.htm

<HTML>

<HEAD>

<TITLE>3</TITLE>

</HEAD>

<BODY>

<a href="1.htm">таб1</a><BR>

<a href="2.htm">таб2</a><BR>

</BODY>

</HTML>

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]