Какой оператор мне нужно перегрузить? - PullRequest
0 голосов
/ 18 сентября 2011

Какой оператор мне нужно перегрузить, если я хочу использовать что-то вроде этого?

MyClass C;

cout<< C;

Результатом моего класса будет строка.

Ответы [ 3 ]

2 голосов
/ 18 сентября 2011

если вам нужно перегрузить operator<< как:

std::ostream& operator<<(std::ostream& out, const MyClass & obj)
{
   //use out to print members of obj, or whatever you want to print
   return out;
}

Если для этой функции требуется доступ к закрытым членам MyClass, то вам нужно сделать ее friend из MyClassили, альтернативно, вы можете делегировать работу какой-то общедоступной функции класса.

Например, предположим, что у вас есть точечный класс, определенный как:

struct point
{
    double x;
    double y;
    double z;
};

Тогда вы можете перегрузить operator<< как:

std::ostream& operator<<(std::ostream& out, const point & pt)
{
   out << "{" << pt.x <<"," << pt.y <<"," << pt.z << "}";
   return out;
}

И вы можете использовать его как:

point p1 = {10,20,30};
std::cout << p1 << std::endl;

Вывод:

{10,20,30}

Демонстрационная версия онлайн: http://ideone.com/zjcYd

Надеюсь, это поможет.

1 голос
/ 18 сентября 2011

Оператор потока: << </p>

Вы должны объявить его своим другом:

class MyClass
{
    //class declaration
    //....
    friend std::ostream& operator<<(std::ostream& out, const MyClass& mc);
}

std::ostream& operator<<(std::ostream& out, const MyClass& mc)
{
    //logic here
}
0 голосов
/ 18 сентября 2011

Вы должны реализовать operator<< как бесплатную функцию.

...