カスタム クラスから POD またはその他の型への変換の実装は非常に簡単です。これは、目的の型にちなんで名付けられた演算子として、カスタム クラス自体に実装されます。このような、
operator int{ return anInt; }
逆にどうですか?たとえば、int をカスタム クラス型キャストにオーバーロードできますか?
カスタム クラスから POD またはその他の型への変換の実装は非常に簡単です。これは、目的の型にちなんで名付けられた演算子として、カスタム クラス自体に実装されます。このような、
operator int{ return anInt; }
逆にどうですか?たとえば、int をカスタム クラス型キャストにオーバーロードできますか?
基本型をパラメーターとして受け取るクラスのコンストラクターを提供することにより、可能ですが、別の方法で行います。
class X {
public:
X(int) {}
};
void f(X const &x) { }
int main(){
f(2); // allowed -- will construct an X, then pass it to `f`.
}
これは、場合によっては予期しない変換につながる可能性があることに注意してくださいexplicit
。明示的に変換を強制する場合を除いて、そのようなコンストラクターを使用できないようにマークする方がよいと考えられることがよくあります。
単一の引数コンストラクターを使用する
MyClass(int n) :anInt(n) {}