私はドルという名前のクラスを持っています
class Dollars
{
private:
int dollars;
public:
Dollars(){}
Dollars(int doll)
{
cout<<"in dollars cstr with one arg as int\n";
dollars = doll;
}
Dollars(Cents c)
{
cout<<"Inside the constructor\n";
dollars = c.getCents()/100;
}
int getDollars()
{
return dollars;
}
operator int()
{
cout<<"Here\n";
return (dollars*100);
}
friend ostream& operator << (ostream& out, Dollars& dollar)
{
out<<"output from ostream in dollar is:"<<dollar.dollars<<endl;
return out;
}
};
void printDollars(Dollars dollar)
{
cout<<"The value in dollars is "<< dollar<<endl;
}
int main()
{
Dollars d(2);
printDollars(d);
return 0;
}
上記のコードで、オーバーロードされた ostream 演算子を削除すると、
operator int()
{
cout<<"Here\n";
return (dollars*100);
}
しかし、ostream オーバーロードを提供すると、そこには行きません。
私の混乱
Why isn't there any return type for operator int() function as far as my understanding says that all functions in C++ should have a return type or a void except the constructors.
int の代わりに、ユーザー定義のデータ型を提供できますか?
この機能はどのような状況で使用する必要がありますか?