I was reading this document for templates:
An Idiot's Guide to C++ Templates - Part 2
I came across one definition that I did not understand:
struct Currency
{
int Dollar;
int Cents;
operator double()
{
return Dollar + (double)Cents/100;
}
};
It involves the definition of the operator double()
function inside the struct body.
What exactly is this, and what does it do?
At first, I thought this was a functor, but a functor definition looks like this:
int operator ()
The operator double()
makes an instance of Currency
implicitly convertible to double
. Here are two examples where operator double()
is used:
Currency cur{1, 2};
double d = cur; // this works, d is now 1.02
std::cout << cur << '\n'; // and even this (and prints 1.02)