組み込みの型変換とユーザー定義の型変換とは? わかりやすく解説

Weblio 辞書 > 辞書・百科事典 > ウィキペディア小見出し辞書 > 組み込みの型変換とユーザー定義の型変換の意味・解説 

組み込みの型変換とユーザー定義の型変換

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2020/06/07 23:27 UTC 版)

型変換」の記事における「組み込みの型変換とユーザー定義の型変換」の解説

基本的な型変換整数どうしの変換や、整数浮動小数点数との間の変換など)は、多くプログラミング言語処理系最初から定義されており、通例プロセッサ (CPU) によってサポートされ高速ハードウェア変換命令コンパイルされる。一方、ある型から別の型への変換ユーザー定義できる言語もある。 例えC++では、ユーザー定義型の中に変換元の型を一つだけとる引数付きコンストラクタを定義すれば、ユーザー定義の暗黙型変換定義できる。これを変換コンストラクタ (converting constructor) と呼ぶ。コンストラクタexplicit修飾子をつけると暗黙型変換許されなくなり明示的型変換が必要となる。 class Class1 { };class Class2 {public: explicit Class2(Class1 c1) { /* ... */ }};void test() { Class1 c1; Class2 c2 = (Class2)c1; // explicit 修飾子なければ Class2 c2 = c1; でよい。 // explicit有無かかわらず、Class2 c2(c1); と書くことは常にできる。} ここで、Class1とClass2の間には継承関係がないにもかかわらず代入ができている。これはClass1からコンストラクタ通してClass2に型変換されるからである。 なお、上の例では型変換構文をとってはいるが、実際の処理としてはc1コンストラクタへの引数として渡されている。そのため、本来必要のないc1コピー生成される。これを避けるために、変換元の型がユーザー定義型である場合には、通常引数参照として渡す。また、型変換という操作の意味考えれば変換元のインスタンス変更加えということはあり得ないので、通常引数const修飾子をつけて変更不可とする。結局コンストラクタ宣言explicit Class2(const Class1& c1) { ... } のように書くことが多い。 なお、C++11以降では複数引数を持つコンストラクタであってもexplicit指定しない場合変換コンストラクタとなることができる。

※この「組み込みの型変換とユーザー定義の型変換」の解説は、「型変換」の解説の一部です。
「組み込みの型変換とユーザー定義の型変換」を含む「型変換」の記事については、「型変換」の概要を参照ください。

ウィキペディア小見出し辞書の「組み込みの型変換とユーザー定義の型変換」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「組み込みの型変換とユーザー定義の型変換」の関連用語

1
18% |||||

組み込みの型変換とユーザー定義の型変換のお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



組み込みの型変換とユーザー定義の型変換のページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、Wikipediaの型変換 (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。

©2025 GRAS Group, Inc.RSS