Какие операторы можно перегружать в C++?

Вопрос проверяет знание возможностей перегрузки операторов в C++.

Короткий ответ

В C++ можно перегружать множество операторов, таких как арифметические, операторы сравнения, инкремента/декремента, логические операторы и другие, кроме некоторых, например, оператора разрешения области видимости.

Длинный ответ

Операторы, которые можно перегружать:

- Арифметические операторы: +, -, *, /, %

- Операторы присваивания: =, +=, -=, *=, /=, %=

- Операторы сравнения: ==, !=, <, >, <=, >=

- Операторы инкремента/декремента: ++, --

- Логические операторы: !, &&, ||

- Побитовые операторы: &, |, ^, ~, <<, >>

- Операторы подстрочного индекса: []

- Оператор вызова функции: ()

- Операторы доступа к членам: ., ->

 

Операторы, которые нельзя перегружать:

- Оператор разрешения области видимости ::

- Условный оператор ?:

- Оператор sizeof

- Оператор typeid

- Операторы для доступа к членам: .*, . (для обычного доступа)

 

Пример перегрузки оператора:

#include <iostream>
using namespace std;

class Complex {
public:
    int real, imag;
    Complex operator + (const Complex& obj) {
        Complex temp;
        temp.real = real + obj.real;
        temp.imag = imag + obj.imag;
        return temp;
    }
};

int main() {
    Complex c1 = {1, 2}, c2 = {3, 4};
    Complex c3 = c1 + c2;  // Используем перегруженный оператор +
    cout << "Result: " << c3.real << " + " << c3.imag << "i" << endl;
    return 0;
}

Преимущества перегрузки операторов:

- Позволяет создавать более интуитивно понятные и удобные пользовательские типы данных.

- Делает код гибким и читаемым.

 

Перегрузка операторов в C++ позволяет переопределять стандартные операторы для пользовательских типов данных, улучшая читаемость и функциональность кода.

Уровень

  • Рейтинг:

    2

  • Сложность:

    6

Навыки

  • C++

Подпишись на C/C++ Developer в телеграм