No.3ベストアンサー
- 回答日時:
たとえば、Complex(複素数)のような、2つの数(たとえばreとim)を持つようなクラスを定義したとして、それをdouble型に変換したいとき、reとimどちらをdoubleにすればよいでしょうか?
変換関数では、これを、
reをdoubleとする、とか、
re+imをdoubleとする、とか、
sqrt(re*re+im*im)をdoubleとする、とか、
atan2(im,re)をdoubleとする、とか、
クラスのメンバ変数関係なく0とする、とか、
いろいろと自由に定義することが出来ます。
キャストではこれが出来ません。
これが違いで、利点です。
No.4
- 回答日時:
毎回キャストする方が明らかに面倒だと思うのですが、
どのようなコードを書いて、どこが面倒だと思ってますか?
結局必要に応じて変換関数が呼ばれるのは一緒です。
プログラマが"むやみにキャストする"と、
コンパイラのチェックを抑制する可能性/危険性があげかねません。
変換先の型も、自分で調べなければなりませんし、
コンパイラが判断に迷う/判断を間違わない限り、
任せる方が楽でしょう。
人間が書けば書くほど、ミスの可能性も増えるので、
ルールだけ関数で定義した方が安全だとも思います。
# キャストなんて書かないに越したことがない、ってのがC++の基本だと思います。
# (APIなどの)C言語との連携部分など仕方ないケースは別として、
# 基本的にキャストを多用せざるを得ないのは汚い設計の現われでは。
No.2
- 回答日時:
決まりきった説明をしても、本と大差ない内容になってしまうと思うので...
> だったら、このような面倒なことしなくても毎回キャストすればいいんじゃないかなと思います。
具体的にはどのようにすればよいと思っていますか?その内容を補足してみてください。
No.1
- 回答日時:
変換コンストラクタと変換関数は、キャストの実体を定義するものです。
特に、C++ではクラスを扱うので、プログラマサイドが定義しない限り、処理系には「適切なキャスト」がそもそも判断できませんから。
たとえば、int -> string に変換する際に、
・int の値を、10進数で文字列表現したもの
・int の値を単純に文字コードと見て文字列にしたもの
のどちらでキャストして欲しいかは、プログラマの都合によります。
もっと、複雑なクラスであれば、なおさらです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語について。 5 2023/06/27 18:37
- 日本語 なぜ「壊石料理」と記述するのでしょうか? 26 2023/06/17 13:01
- フリーソフト Google 日本語入力の調子がおかしい 1 2022/09/21 20:12
- フリーソフト 倍率自動調整して全画面表示できるフリーの画像ビューアー 1 2023/08/24 10:55
- 家賃・住宅ローン 金利について sbi銀行の住宅ローンを組んでいます。 現在、変動年利0.875%で残高1500万円ほ 1 2023/06/08 11:51
- C言語・C++・C# キャスト演算について。 1 2023/07/15 15:28
- CAD・DTP メインはAutocadからJwwに変換、尚且つ事前修正が少ないもの 1 2022/10/30 13:37
- 数学 次の問題についてご教授願いします。 3点z=0 , z=-1 , z=i をそれぞれω=0 , ω= 4 2023/05/23 20:13
- その他(コンピューター・テクノロジー) 辻の字について みよじに辻がついている方に質問です。 パソコン、タブレット、スマホで変換したら点が2 2 2022/10/10 12:36
- その他(Microsoft Office) WordやExcelで英数字のみ半角または全角にしたい 6 2022/08/03 08:18
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
javaで質問です。 文字列2023/2...
-
COBOLで半角カナを全角カナに変換
-
Path型をString型へ変換する(Java)
-
javascriptで文字列のsjis利用...
-
下記問題の答えが"D"になる意味...
-
javaの初歩的な質問です。
-
JavaのStringクラスに「外字」...
-
IBM漢字コード⇒SJIS変換方法
-
[Javascript]エンターキー押下...
-
ダブルクォーテーションのrepla...
-
数字を読みに変換する方法について
-
Windows-31Jからutf-8への変換...
-
Visual Basic でのコードをASCI...
-
C言語32bitから64bitの移行につ...
-
byte型のマイナスの扱いについて
-
int型のゼロ埋め
-
カタカナ変換
-
cookie から取り出すと文字化け
-
javaで「全角が含まれているか...
-
byte[] を long,float とかに...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
javaで質問です。 文字列2023/2...
-
ダブルクォーテーションのrepla...
-
Path型をString型へ変換する(Java)
-
カタカナをローマジに変換する。
-
javascriptで文字列のsjis利用...
-
int型のゼロ埋め
-
Visual Basic でのコードをASCI...
-
文字列の比較
-
COBOLで半角カナを全角カナに変換
-
JavaのStringクラスに「外字」...
-
C言語32bitから64bitの移行につ...
-
byte[] を long,float とかに...
-
UTF-8とUnicodeの互換性
-
[Javascript]エンターキー押下...
-
エクセルVBAで「〜」が表現でき...
-
Windows-31Jからutf-8への変換...
-
substring バイト単位でやりたい
-
IBM漢字コード⇒SJIS変換方法
-
byte配列をImageに変換する
-
Arduino(C言語) String "1101" ...
おすすめ情報