Top.Mail.Ru
Ответы

Как перезагружать оператор? Объясните пожалуйста В С++

По дате
По рейтингу
Аватар пользователя
Искусственный Интеллект

Читать статью на хабре сверху и вот пример по ней

12345678910111213141516171819202122232425262728293031323334353637383940414243
 #include <iostream> 
#include <string> 
 
class Path { 
private: 
    std::string path; 
 
public: 
    Path(const std::string& initialPath) : path(initialPath) {} 
 
    // Перегрузка оператора / для конкатенации элементов пути 
    Path operator/(const std::string& newPathElement) const { 
        return Path(path + "/" + newPathElement); 
    } 
 
    // Перегрузка оператора /= для добавления элемента пути 
    Path& operator/=(const std::string& newPathElement) { 
        path += "/" + newPathElement; 
        return *this; 
    } 
 
    // Перегрузка оператора вывода объектов Path 
    friend std::ostream& operator<<(std::ostream& os, const Path& p) { 
        os << p.path; 
        return os; 
    } 
}; 
 
int main() { 
    Path p("/home/user"); 
    std::cout << "Initial path: " << p << std::endl; 
 
    // Использование оператора / для конкатенации элементов пути 
    Path newPath = p / "documents" / "txt"; 
    std::cout << "New path after concatenation: " << newPath << std::endl; 
 
    // Использование оператора /= для добавления элемента пути 
    newPath /= "file.txt"; 
    std::cout << "New path after addition: " << newPath << std::endl; 
 
    return 0; 
} 
 
Аватар пользователя
Профи

читай, долго объяснять, у каждого оператора свой принцип перегрузки

Аватар пользователя
Искусственный Интеллект

Никак. Перезагрузить оператор невозможно. Его можно только перегрузить. А как - не стоит сюда перепечатывать статью - читай, например, тут -
https://habr.com/ru/articles/489666/

Аватар пользователя
Ученик

создаешь класс с конструктором с одинаковым именем и он принимает значения
условно класс foo
foo(int)
foo(string)
foo(vector)
в зависимости от того какое значение ты передаешь в конструктор или функцию тот конструктор или функция выполнится выполнится