[過去ログ] C++相談室 part155 (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
919: 2021/05/17(月)11:39 ID:ZeUb3kXE(1) AAS
2つの複素数 z1, z2 に対して z1 < z2 を |z1| < |z2| と定義してしまうと、
z1, z2 がたまたま(複素数の一部であるところの)実数である場合は、
x1 < x2 が |x1| < |x2| と定義されることになってしまうが、
そうすると、負数の時に通常の実数の比較と結果が違ってきてしまう。
920(1): 2021/05/17(月)12:08 ID:CucgVtNi(1) AAS
だから複素数体を順序体にできないことなんて代数の教科書にいくらでも証明載ってるんだから読めよ
いつまでやってんだ
921(1): 2021/05/17(月)12:09 ID:giSQx4b2(1) AAS
std::locale::global(std::locale("japanese"));
必要ですか?
無くても動いてるときに敢えて描くと可笑しくなりますか?
922: 2021/05/17(月)12:12 ID:cCPUzk2p(1/2) AAS
complexには<=>がないね
923: 2021/05/17(月)12:14 ID:+IMuyr7J(1) AAS
>>921
何のために?
挙動が変わることはあるけどそれがおかしいかどうかは目的次第
924: 2021/05/17(月)12:29 ID:0hooCSOD(1) AAS
>>920
QZがあまりの悔しさにID変えて荒らしてるんだよ
925: 2021/05/17(月)13:05 ID:DzXjbqQO(1) AAS
>>906
>判断せざるおえない
単刀直入に言ってバカっぽい
926: 2021/05/17(月)13:40 ID:AtV47BCw(1) AAS
ハンダンセ猿はすばしっこいからな
927: 2021/05/17(月)13:54 ID:+0j9FXFm(2/2) AAS
QA分解はそもそも数値誤差を減らすのがめちゃくちゃ難しいからあんま使われんのよ。
特別な事情がない限りは軽はずみに手を出すのはやめた方がいい。
928: 2021/05/17(月)16:56 ID:Hl6gcnGv(1) AAS
g++で Member 'x' was not initialized in this constructor
って警告が出るんだが、これをpragmaで抑止したい。
このwarningを抑止するためのキーワードを教えてもらえないだろうか
929: 2021/05/17(月)17:16 ID:cCPUzk2p(2/2) AAS
C++20のコード晒せるところ、どっかある?
ideoneやcodepadはダメだった
930(1): 2021/05/17(月)17:58 ID:v7SqzMPT(1) AAS
wandbox
931(1): 2021/05/17(月)18:24 ID:rt013aFx(2/6) AAS
>>863
複素数より実数の方が演算が広いから複素数を継承して実数を作る
継承してメンバ関数を増やす
作り方として適切かどうかはともかくとして、
例としては何も間違ってないと思うのだが
932: 2021/05/17(月)18:34 ID:rt013aFx(3/6) AAS
C++的に複素数に順序を取り入れるなら
辞書的順序が一番使われ方として多いかと
コンテナに入れるのに順序が必須な場合とか
std::pair < double, double >
これだって勝手に定義される
C/C++に数学的な汎用性が必須ではないのは
C/C++をやっていればわかると思う
1./-0. < 1./0. とか pow(0,0) = 1 とか数学的には明らかにおかしいでしょ
933: 2021/05/17(月)18:51 ID:pyZ7P5gV(4/6) AAS
まあ辞書順は可能だぬ
934(2): 2021/05/17(月)19:28 ID:xbubPeOw(5/5) AAS
>>931
c++のpublic継承は継承先クラスを継承元クラスと同じものとして扱うので、特性の包含性が重要。
なので、失われる特性があるなら継承はしないほうが良い。
上でも挙がっているけど、複素数は実数の全順序性という特性が失われるので継承はしないほうが良い。やるなら無限体を継承元クラスにすべきだわな。
935: 2021/05/17(月)19:49 ID:pZGof8k7(2/2) AAS
>>910
ブルバギじゃなくて?
936: 2021/05/17(月)20:09 ID:FZJkNpOI(1) AAS
正多面体と素数
動画リンク[YouTube]
937: 2021/05/17(月)20:11 ID:PX9GndkV(1) AAS
何のスレやねん
938(3): 2021/05/17(月)20:51 ID:pyZ7P5gV(5/6) AAS
>>934
継承したからといって継承元クラスで定義される演算を継承したクラスにも引き継がねばならない理由は無い
演算子のオーバーロードと型変換関連のコンストラクタまたはキャスト演算子を定義したら
同じ演算子に対してパラメータの型毎に許す演算と許さない演算を任意に設定できる
特にComplexクラスからRealクラスを派生させた場合は
(この場合は|z|やarg(z)といった複素数の演算子がReal以外の実数を返すComplexのメソッドとすることになりそうだがそれはおくとして
ある意味話は簡単で、Complex同士のoperator<()の一族を定義せずにおもむろにReal同士でだけ定義するだけにしたらええんじゃ
つか個人的にカナーリ疑問なのですだが、AがBの真部分集合であることと、
Aを表すのクラスとBを表すクラスの継承関係は一体追求すべき何の関係があるん??
939(3): 2021/05/17(月)21:58 ID:SfcIGFpx(1) AAS
継承元として振る舞えるのはポリモーフィズムの必須要件じゃない?
親クラスとして振る舞えなくなる子クラスとか存在価値ないでしょ
940(1): 2021/05/17(月)22:27 ID:rt013aFx(4/6) AAS
>>934
は?
複素数を継承して実数を作る
という話だけど
941(1): 2021/05/17(月)22:36 ID:pyZ7P5gV(6/6) AAS
>>939
実数を複素数としてふるまわせたいならRealをComplexに型変換したら済むので継承やポリモーフィズムは必須ではない
>>938の問いに戻るがなんで集合としての包含関係をそう執拗に継承関係に反映させようとするんじゃ……
だいたい実数から複素数を作る演算(|z|とarg(z)で複素数zを作る)もあるし
複素数から実数を作る演算(|z|やarg(z))があるから変換は双方向的なので、
この場合派生クラスから基底クラスへの一方的変換だけでは片手落ちなのは明白
無理矢理やったら>>938に書いたみたく|z|やarg(z)といった複素数の演算子がReal以外の実数を返すみたいなgdgdな話に……
942(1): 2021/05/17(月)22:39 ID:rt013aFx(5/6) AAS
>>941
おまえ文系だろ
>>939に「ポリモーフィズムは必須」なんて書いてない
943: 2021/05/17(月)23:00 ID:hwY+PVbw(1/2) AAS
>>938
>継承したからといって継承元クラスで定義される演算を継承したクラスにも引き継がねばならない理由は無い
さすがに演算が別物レベルで違うのはc++のpublic継承を使うべきじゃない。
public継承は継承元クラスのポインタ変数・参照として使えるという意思表示でもある。使えると言っているのに使えないのはクラスのユーザーを混乱させるし、コンパイラとかからの支援も期待できなくなる。
継承元か継承先かを意識してプログラムしなきゃいけないのは典型的な「継承の危険な使い方」だよ。
944(1): 2021/05/17(月)23:17 ID:hwY+PVbw(2/2) AAS
>>940
えっ、そうなの?
それなら継承の問題は無いと思うけど、継承を使うメリットある? c++だと性能的に不利な気が。
浮動小数から整数を継承するのと似たような臭いがする。
945: 2021/05/17(月)23:39 ID:GYmzER1r(1) AAS
浮動小数と整数は継承関係にない代わりに個別に暗黙変換のルールが作り込まれているわけだから
同列には語れんような。
946(2): 2021/05/17(月)23:53 ID:rt013aFx(6/6) AAS
>>944
元は>>846
>>863が逆だと勘違いしたんだろうねえ
そこから中身のないプライドを保つ為だけの書き込み多数
947: 2021/05/18(火)00:42 ID:pJ71QEbf(1) AAS
>>946
お前頭悪いって良く言われるっしょ
948: 2021/05/18(火)01:40 ID:FUhBCUlD(1) AAS
ここまでのアホみたいな流れは全部>>793のクソコードのせいにして終わり終わり
上下前次1-新書関写板覧索設栞歴
あと 54 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.029s