Перегрузка операций

Пример 1

Рассмотрим перегрузку операций на примере класса CVector. Экземпляры этого класса будут представлять из себя обычные векторы на плоскости. Каждый вектор будет задаваться двумя числами (x и y). После переопределения мы сможем складывать наши векторы (посредством обыкновенного плюса), вычитать (с помощью минуса), скалярно перемножать (используя знак *) и т. д.

#include <iostream.h>

class CVector{

float m_x, m_y;

public:

CVector(){}

CVector(float x, float y);

CVector operator+(CVector);

void print();

};

void main(){

CVector a, b(1,2), c(3,1);

a=b+c;

a.print();

cout<<"\n";

}

CVector::CVector(float x, float y){

m_x=x;

m_y=y;

}

CVector CVector:: operator+(CVector v){

CVector t;

t.m_x=m_x+v.m_x;

t.m_y=m_y+v.m_y;

return t;

}

void CVector::print(){

cout<<"("<<m_x<<", "<<m_y<<")";

}

Умножение с векторами

float CVector::operator*(CVector v){

return m_x*v.m_x + m_y*v.m_y;

}

И в самой программе меняем так:

void main(){

CVector b(1,2), c(3,1);

int z;

z=b*c;

cout<<z<<"\n";

}

Пример 2

Перегрузка операций со строками: Плюс и минус (добавить и удалить букву из строки)

#include <iostream.h>

#include <string.h>

class string

{

public:

string(char *); // Конструктор

char * operator +(char *);

char * operator -(char);

void show_string(void);

private:

char data[256];

};

string::string(char *str)

{

strcpy(data, str);

}

char * string::operator +(char *str)

{

return(strcat(data, str));

}

char * string:: operator -(char letter)

{

char temp[256];

int i, j;

for (i = 0, j = 0; data[i]; i++) if (data[i] 1= letter) temp[j++] = data[i];

temp[j] = NULL;

return(strcpy(data, temp));

}

void string::show_string(void)

{

cout << data << endl;

}

void main(void)

{

string title("Учимся программировать на C++");

string lesson("Перегрузка операторов");

title.show_string();

title = title + " я учусь";

title.show_string();

lesson.show_string();

lesson = lesson - '?';

lesson.show_string();

}

----------------------------------------------------------------------------------------------------------


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: