c++ - Operator overloading, need an explanation -


this question has answer here:

there code:

 class precision {           int digits;        public:   precision(int digits) : digits(digits) {}        friend ostream& operator<<(ostream& os, const precision& p) {            os.precision(p.digits);            return os;        }    }; 

it's meant make command line like:

cout << precision(5) << << " " << precision(2) << b << endl;  

to work, instead of doing:

cout.precision(5); cout << << " "; cout.precision(2); cout << b << endl 

i fail understand how friend function part works. why friend? , how come receives 2 arguments instead of one? thanks.

it friend can access private value digits.

the 2 arguments come compiler matching cout << precision(5) call operator<<(cout, precision(5)). operator returns refence stream, used next part stream << a, etc.


Comments

Popular posts from this blog

java - Suppress Jboss version details from HTTP error response -

gridview - Yii2 DataPorivider $totalSum for a column -

Sass watch command compiles .scss files before full sftp upload -