Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Задача 1: Перегрузка оператора + для класса Complex
- Условие: Создайте класс Complex, представляющий комплексное число. Перегрузите оператор +, чтобы можно было складывать два комплексных числа.
- #include <iostream>
- using namespace std;
- class Complex {
- private:
- double real, imag;
- public:
- Complex(double r = 0, double i = 0) : real(r), imag(i) {}
- // Перегрузка оператора + здесь
- void print() const {
- cout << "(" << real << " + " << imag << "i)" << endl;
- }
- };
- int main() {
- Complex c1(3, 4);
- Complex c2(1, 2);
- Complex c3 = c1 + c2;
- c3.print(); // Вывод: (4 + 6i)
- return 0;
- }
- Задача 2: Перегрузка оператора - для класса Vector
- Условие: Создайте класс Vector, представляющий вектор в трёхмерном пространстве. Перегрузите оператор -, чтобы можно было вычитать один вектор из другого.
- #include <iostream>
- using namespace std;
- class Vector {
- private:
- double x, y, z;
- public:
- Vector(double x = 0, double y = 0, double z = 0) : x(x), y(y), z(z) {}
- // Перегрузка оператора - здесь
- void print() const {
- cout << "(" << x << ", " << y << ", " << z << ")" << endl;
- }
- };
- int main() {
- Vector v1(5, 6, 7);
- Vector v2(1, 2, 3);
- Vector v3 = v1 - v2;
- v3.print(); // Вывод: (4, 4, 4)
- return 0;
- }
- Задача 3: Перегрузка оператора * для скалярного умножения
- Условие: Перегрузите оператор *, чтобы можно было умножать вектор на скаляр.
- #include <iostream>
- using namespace std;
- class Vector {
- private:
- double x, y, z;
- public:
- Vector(double x = 0, double y = 0, double z = 0) : x(x), y(y), z(z) {}
- // Перегрузка оператора * ниже
- void print() const {
- cout << "(" << x << ", " << y << ", " << z << ")" << endl;
- }
- };
- int main() {
- Vector v(1, 2, 3);
- Vector scaled = v * 2;
- scaled.print(); // Вывод: (2, 4, 6)
- return 0;
- }
- Задача 4: Перегрузка оператора << для вывода объекта
- Условие: Перегрузите оператор <<, чтобы можно было выводить объект класса Person с помощью cout.
- #include <iostream>
- #include <string>
- using namespace std;
- class Person {
- private:
- string name;
- int age;
- public:
- Person(string n, int a) : name(n), age(a) {}
- // Дружественная функция для перегрузки оператора << здесь
- };
- int main() {
- Person p("Alice", 30);
- cout << p << endl; // Вывод: Name: Alice, Age: 30
- return 0;
- }
- Задача 5: Перегрузка оператора == для сравнения объектов
- Условие: Перегрузите оператор ==, чтобы можно было сравнивать два объекта класса Point.
- #include <iostream>
- using namespace std;
- class Point {
- private:
- int x, y;
- public:
- Point(int x = 0, int y = 0) : x(x), y(y) {}
- // Перегрузка оператора == здесь
- };
- int main() {
- Point p1(1, 2);
- Point p2(1, 2);
- Point p3(3, 4);
- cout << (p1 == p2) << endl; // Вывод: 1 (true)
- cout << (p1 == p3) << endl; // Вывод: 0 (false)
- return 0;
- }
- Задача 6: Перегрузка оператора != через оператор ==
- Условие: Перегрузите оператор !=, используя уже определённый оператор ==.
- #include <iostream>
- using namespace std;
- class Point {
- private:
- int x, y;
- public:
- Point(int x = 0, int y = 0) : x(x), y(y) {}
- bool operator==(const Point& other) const {
- return (x == other.x) && (y == other.y);
- }
- // Перегрузка оператора != через оператор == здесь
- };
- int main() {
- Point p1(1, 2);
- Point p2(1, 2);
- Point p3(3, 4);
- cout << (p1 != p2) << endl; // Вывод: 0 (false)
- cout << (p1 != p3) << endl; // Вывод: 1 (true)
- return 0;
- }
- Задача 7: Перегрузка унарного минуса
- Условие: Перегрузите унарный минус для класса Vector.
- #include <iostream>
- using namespace std;
- class Vector {
- private:
- double x, y, z;
- public:
- Vector(double x = 0, double y = 0, double z = 0) : x(x), y(y), z(z) {}
- // Перегрузка унарного минуса здесь
- void print() const {
- cout << "(" << x << ", " << y << ", " << z << ")" << endl;
- }
- };
- int main() {
- Vector v(1, 2, 3);
- Vector negV = -v;
- negV.print(); // Вывод: (-1, -2, -3)
- return 0;
- }
- Задача 8: Перегрузка оператора присваивания =
- Условие: Перегрузите оператор присваивания для класса String.
- #include <iostream>
- #include <cstring>
- using namespace std;
- class String {
- private:
- char* data;
- public:
- String(const char* str = "") {
- data = new char[strlen(str) + 1];
- strcpy(data, str);
- }
- ~String() {
- delete[] data;
- }
- // Перегрузка оператора присваивания = здесь
- void print() const {
- cout << data << endl;
- }
- };
- int main() {
- String s1("Hello");
- String s2("World");
- s1 = s2;
- s1.print(); // Вывод: World
- return 0;
- }
- Задача 9: Перегрузка оператора ++ (префиксный и постфиксный)
- Условие: Перегрузите оператор ++ для класса Counter.
- #include <iostream>
- using namespace std;
- class Counter {
- private:
- int value;
- public:
- Counter(int v = 0) : value(v) {}
- // Префиксный ++ здесь
- // Постфиксный ++ здесь
- void print() const {
- cout << value << endl;
- }
- };
- int main() {
- Counter c(5);
- (++c).print(); // Вывод: 6
- (c++).print(); // Вывод: 6
- c.print(); // Вывод: 7
- return 0;
- }
- Задача 10: Перегрузка оператора индексации []
- Условие: Перегрузите оператор [] для доступа к элементам массива.
- #include <iostream>
- using namespace std;
- class Array {
- private:
- int* data;
- int size;
- public:
- Array(int s) : size(s) {
- data = new int[size];
- }
- ~Array() {
- delete[] data;
- }
- // Перегрузка оператора индексации [] здесь
- void print() const {
- for (int i = 0; i < size; ++i) {
- cout << data[i] << " ";
- }
- cout << endl;
- }
- };
- int main() {
- Array arr(5);
- for (int i = 0; i < 5; ++i) {
- arr[i] = i + 1;
- }
- arr.print(); // Вывод: 1 2 3 4 5
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment