最近、O'ReillyMediaのC++ Pocket Referenceのコピーを閲覧していましたが、ユーザー定義型のユーザー定義変換に関する簡単なセクションと例に出くわしたとき、驚きました。
#include <iostream>
class account {
private:
double balance;
public:
account (double b) { balance = b; }
operator double (void) { return balance; }
};
int main (void) {
account acc(100.0);
double balance = acc;
std::cout << balance << std::endl;
return 0;
}
私はしばらくの間C++でプログラミングしてきましたが、この種の演算子のオーバーロードを見たのはこれが初めてです。この主題に関する本の説明はやや簡潔であり、この機能に関するいくつかの未回答の質問が残っています。
- これは特にあいまいな機能ですか?私が言ったように、私はしばらくの間C ++でプログラミングしてきましたが、これに出くわしたのはこれが初めてです。私はこれに関してもっと詳細な資料を見つけることができませんでした。
- これは比較的ポータブルですか?(私はGCC 4.1でコンパイルしています)
ユーザー定義のタイプへのユーザー定義の変換を行うことはできますか?例えば
演算子std::string(){/*コード*/}