CIS29 - Example 4 - namespace my - my own cout

#include <iostream>
#include <cstdio>
#include <cmath>
using std::printf;

namespace my
{
   class out
   {
   public:
      out& operator<<(const int&);
      out& operator<<(const double&);
      out& operator<<(const char&);
   };
   out cout;
   const char endl = '\n';
   using std::sqrt;
}

my::out&   my::out::operator<<(const int& x)
{
   printf("%d",x);
   return *this;
}
my::out&   my::out::operator<<(const double& x)
{
   printf("%lf",x);
   return *this;
}
my::out&   my::out::operator<<(const char& x)
{
   printf("%c",x);
   return *this;
}

int main()
{
   using namespace my;
   cout << 123 << endl;
   cout << sqrt(2.) << endl;
   std::cout << 123 << std::endl;
   std::cout << std::sqrt(2.) << std::endl;
   system("pause");
   return 0;
}

***** Program output *****

123
1.414214
123
1.41421