Остается ли объект cout единственным экземпляром, т.е. он никогда не копируется?
Cout когда-либо копируется неявно?
Например, передается ли объект cout второму перегруженному оператору в приведенном ниже коде, а объект cout внутри его реализации является одним и тем же объектом или является копией cout?
Насколько я понимаю, первая реализация верна, потому что оператор << работает для любого объекта ostream, например, он будет работать для объектов ofstream для записи в файлы.
//First implementation
ostream& operator<<(ostream& os, const Date& dt)
{
os << dt.mo << '/' << dt.da << '/' << dt.yr;
return os;
}
//Second implementation
ostream& operator<<(ostream& os, const Date& dt)
{
cout << dt.mo << '/' << dt.da << '/' << dt.yr;
return cout;
}
//using second implementation on object date
cout<<date;
2 ответа
Решение
std::istream
а также std::ostream
объекты не могут быть скопированы. поскольку std::cout
является ostream
объект (его тип является производным от std::ostream
), его нельзя скопировать.