MyTetra Share
Делитесь знаниями!
Перегрузка +,-,!,
Время создания: 13.06.2020 18:42
Раздел: C++ - Примеры кода - Работа на уроке
Запись: Shut913/Tetra-notes-Programming/master/base/1592062928jg2fxardef/text.html на raw.githubusercontent.com

#include <iostream>


using namespace std;


// Перегрузка

// Операторы реализованы как ф-ции


// Ограничения перегрузки операторов

// 1. Исключения: ?: sizeof :: . .*

// 2. Только существующие

// 3. Минимум один операнд - пользовательского типа

// 4. Количество операндов изменять нельзя

// 5. Сохраняют свой приоритет и ассоциативность


// ^ 2^4 int a = (2 ^ 4) + 5; => используйте pow(2, 3)


// + << == !=



// Унарные i++ --a -b !x

// Бинарные a + b c%d =



// Общий вид

//return_type operator#(arguments_list)

//{

// // некоторые операции

//}



//class Point

//{

//private:

//

//public:

// int _x;

// int _y;

// explicit Point() : _x{}, _y{} {}

// explicit Point(int x, int y): _x{x}, _y{y} {}

//

// int getX() const { return _x; }

// int getY() const { return _y; }

// void setX(int x) { _x = x; }

// void setY(int y) { _y = y; }

//

// void show() const { cout << _x << "; " << _y << endl; }

// void addr() const { cout << this << endl; }

//

// Point operator+(Point p) const

// {

// Point tmp;

// tmp.setX(this->_x + p._x);

// tmp.setY(this->_y + p._y);

//

// return tmp;

// }

//

// Point operator-(Point p) const

// {

// Point tmp;

// tmp.setX(this->_x - p._x);

// tmp.setY(this->_y - p._y);

//

// return tmp;

// }

//

// Point operator!() const

// {

// return Point(-this->_x, -this->_y);

// }

//};

//

//

//void main()

//{

// //Point a(3, 2);

// //Point b(40, 50);

//

// //// Point c = a + b; // a.operator+(b)

// //Point c = a - b;

// //c.show();

//

// //Point* p = new Point();

//

// Point a(3, 2);

// Point c = a; // a.operator-()

// c.show();

//

//}


class Box

{

private:

int* _p;


public:

Box() : _p{ nullptr } {}

Box(int p) : _p{ new int{p} } {}

Box(const Box& obj)

{

this->_p = new int;

*_p = *(obj._p);

}


Box& operator=(const Box& obj)

{

if (this->_p == nullptr)

this->_p = new int;


*_p = *(obj._p);


return *this;

}


int getP()

{

return _p != nullptr ? *_p : 0;

}


void setP(int p)

{

if (_p == nullptr)

_p = new int;

*_p = p;

}

};


void main()

{

Box a(2);

Box b;

b = a;

}


Так же в этом разделе:
 
MyTetra Share v.0.59
Яндекс индекс цитирования