C の変換演算子
質問: C では変換演算子はどのように機能し、コンパイラがいつ試行するのか変換後に定義された型を置き換える演算子?
答え: C の変換演算子は、クラス間の型変換、またはクラスから基本型への型変換を容易にします。コンパイラは、次の状況で変換演算子の後に指定された型を置き換えます:
引数の受け渡し中の変換:
- 引数の受け渡し中、コピーの初期化の規則参照に変換するかどうかに関係なく、変換関数を考慮して適用します。
- 例: void f(B); int main() { f(A()); }
参照への変換:
- 条件演算子では、変換先の型が左辺値の場合、参照型への変換が可能です。
- 例: B b; 0 ? b : A();
関数ポインターへの変換:
- 関数ポインターまたは参照への変換関数は、関数呼び出しが次の場合に使用できます。
- 例: typedef void (*fPtr)(int); void foo(int a); struct test { 演算子 fPtr() { return foo; } };
非クラス型への変換:
- ユーザー定義の変換関数は、非クラス型が関与する暗黙的な変換に使用できます。 .
- 例: struct test {operator bool() { return true; } };
変換関数テンプレート:
- テンプレートを使用して、型を任意のポインター型に変換できる変換関数を作成できます。 .
- 例: struct test { template演算子 T*() { 0 を返す; } };
-
注意: これらは、あいまいな変換につながる可能性があるため、慎重に使用する必要があります。
以上がC では変換演算子はどのように機能しますか?また、コンパイラは型置換に変換演算子をいつ使用しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。