|
|||||||
Перегрузка +,-,!,
Время создания: 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; } |
|||||||
Так же в этом разделе:
|
|||||||
|
|||||||
|