Добавил:
Помощь с лабораторными, контрольными практическими и курсовыми работами по: - Инженерной и компьютерной графике - Прикладной механике Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2 сем 1 курс С++ / Экзамен / Lektsii_Kurakina_2_semestr.pdf
Скачиваний:
12
Добавлен:
08.08.2022
Размер:
4.82 Mб
Скачать

4.9 Перегрузка операции индексации []

Индексация — бинарная операция, где первый операнд — объект класса, второй — целочисленный индекс. Перегрузка операции индексации позволяет работать с элементами объекта vector, как с элементами массива.

#include <iostream>

using namespace std;

class vector {

int v[3];

public:

vector (int a=0, int b=0, int c=0)

{v[0]=a; v[1]=b; v[2]=c;}

vector operator +(vector t);

vector operator =(vector t);

int & operator[](int i);

void show(void);};

vector vector::operator+(vector t)

{vector tmp;

for (int i=0; i<3; i++)

tmp.v[i]=t.v[i]+v[i];

return tmp;}

vector vector::operator=(vector t)

{vector tmp;

for (int i=0;i<3;i++)

v[i]=t.v[i];

return *this;}

int &vector::operator[](int i)

{return v[i];}

void vector::show(void)

{for (int i=0;i<3;i++) cout<<v[i]<<"\n";}

main(void)

{vector v1(1,2,3), v2(10,11,12),v3; v3=v1+v2;

for (int i=0;i<3;i++) cout<<v3[i]<<"\n"; v3.show(); v1[0]=100; v1[1]=201; v1[2]=302; v1.show();}

4.10 Аргументы по умолчанию

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

Вспомним перегруженные конструкторы в классе data:

date (int a, int b, int c);

date (int a);

date (void);

Все три функции можно заменить одной, если считать, что по умолчанию дата устанавливается 01 января 2000 г.

date (int day=1, int month=1, int year=2000);

В новой версии определения объектов дают одинаковые результаты.

date A(1,1,2000); date B(1); date C();

В обоих случаях вызывается один и тот же конструктор, но для В компилятор автоматически подставляет второй и третий аргумент, для С – все три аргумента. Аргументы по умолчанию и перегруженные функции позволяют использовать одно имя в разных ситуациях. Различие состоит в том, что при определении аргументов по умолчанию компилятор сам подставляет аргументы. Как правило, если поведение функций не сильно отличается, следует использовать значения аргументов по умолчанию.

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

Пример.

date D( , ,200); date E(8, , 2018);

/ выдаёт сообщение об ошибке

Соседние файлы в папке Экзамен