[過去ログ] スレを勃てるまでもないC/C++の質問はここで 24 [転載禁止]©2ch.net (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
1(2): デフォルトの名無しさん [sage] 2015/11/28(土) 13:30:34.09 ID:S1e+2GUN(1/2) AAS
スレを勃てるまでもない低俗なC/C++の質問はここでお願いします。
過去ログ
01 2chスレ:tech
02 2chスレ:tech
03 2chスレ:tech
04 2chスレ:tech
05 2chスレ:tech
06 2chスレ:tech
07 2chスレ:tech
08 2chスレ:tech
09 2chスレ:tech
10 2chスレ:tech
11 2chスレ:tech
12 2chスレ:tech
13 2chスレ:tech
14 2chスレ:tech
15 2chスレ:tech
16 2chスレ:tech
17 2chスレ:tech
18 2chスレ:tech
19 2chスレ:tech
20 2chスレ:tech
21 2chスレ:tech
22 2chスレ:tech
23 2chスレ:tech
903(1): uy ◆e6.oHu1j.o [] 2016/07/03(日) 17:22:48.95 ID:VJyaYSRj(1) AAS
>>902
IQ低そう
904: デフォルトの名無しさん [sage] 2016/07/04(月) 21:04:46.75 ID:/A9poSsO(1) AAS
>>901
http://www.bohyoh.com/
905: デフォルトの名無しさん [sage] 2016/07/04(月) 23:36:10.84 ID:usjNXWI/(1) AAS
>>903
確かに140しかないけどさ
906: デフォルトの名無しさん [sage] 2016/07/05(火) 00:46:56.32 ID:/sOVcq36(1) AAS
140ってww
そんなやつが2chやるわけないだろww
907: デフォルトの名無しさん [sage] 2016/07/05(火) 15:37:47.81 ID:THFzv4qe(1) AAS
身長の話じゃねーの?
908: デフォルトの名無しさん [sage] 2016/07/05(火) 22:13:05.66 ID:iT1PYIae(1) AAS
チン長かと
909: デフォルトの名無しさん [sage] 2016/07/06(水) 08:34:12.69 ID:7Bpki8tS(1) AAS
単位はmmか
910: デフォルトの名無しさん [sage] 2016/07/11(月) 22:20:47.56 ID:2eMs4C3s(1) AAS
お前ら的にはアポロ11号のソースコードどうなの?
911: デフォルトの名無しさん [sage] 2016/07/12(火) 00:30:52.60 ID:8XYiu/ca(1/2) AAS
アセンブラをソースと言っていいのかなって感じ
912(2): デフォルトの名無しさん [sage] 2016/07/12(火) 03:46:16.61 ID:N99QS+PT(1) AAS
機械語はコード、それ以外はソース
2005年あたりから増えてきた、高級言語のソースをコードと呼ぶ風潮はうんこだと思うぜ
913: デフォルトの名無しさん [sage] 2016/07/12(火) 04:41:11.08 ID:Vf+ZIi05(1) AAS
機械語は実行コード
それ以外はソースコード
914: デフォルトの名無しさん [sage] 2016/07/12(火) 07:42:05.35 ID:8XYiu/ca(2/2) AAS
機械語はバイナリじゃね
915(1): デフォルトの名無しさん [sage] 2016/07/12(火) 09:54:08.38 ID:j6bBSSGB(1/2) AAS
>>912
> 高級言語のソースをコードと呼ぶ風潮はうんこ
ソースはソースコードの略だからうんこになるほどの問題は孕んでいないと思う。
http://e-words.jp/w/%E3%82%BD%E3%83%BC%E3%82%B9%E3%82%B3%E3%83%BC%E3%83%89.html
> 機械語はコード、それ以外はソース
バイナリ(やオブジェクト)とソースという対比で呼ぶべきでは?
916(3): デフォルトの名無しさん [sage] 2016/07/12(火) 11:51:57.70 ID:sw++mtzw(1) AAS
>>915
そりゃ正式名はソースコードだけど、それを略してコードと呼ぶと意味をなさなくなるんだよ
とくに、仮想マシンで動くようなJAVAコード、.Netコードってへっぽこプログラマーが言うじゃん? よく聞いてみると以下略
>バイナリ
バイナリ⊃機械語 だね
スレ違いなので雑談スレででも
917: デフォルトの名無しさん [sage] 2016/07/12(火) 12:01:19.42 ID:j6bBSSGB(2/2) AAS
>>916
すまない。915は撤回するわ。
918: デフォルトの名無しさん [sage] 2016/07/12(火) 13:12:03.60 ID:bfn2nev7(1) AAS
>>916
普通に英語なんだが
coderとは言うけどsourcerとは言わんぞ
919(1): デフォルトの名無しさん [sage] 2016/07/12(火) 13:24:32.15 ID:M7aV+wc6(1) AAS
機械語の源(source)となる符号(code)が元の意味だろうから
機械語はコードでしかないが他はソースでもコードでもあるでしょ
920: デフォルトの名無しさん [sage] 2016/07/12(火) 15:51:05.87 ID:x9hMoHCp(1) AAS
コーディング規約とも言うしな
921: デフォルトの名無しさん [sage] 2016/07/12(火) 17:21:10.48 ID:aYUQCZhN(1/2) AAS
>>912
機械語(machine code)だってプログラム言語のひとつ(machine language)
要するに高水準言語→低水準言語、つまり source code から machine code へ移り変わる中ですべての状態がcodeだと思うよ
922: デフォルトの名無しさん [sage] 2016/07/12(火) 17:23:58.41 ID:aYUQCZhN(2/2) AAS
「要するに」って要らなかったな
高水準言語→低水準言語、つまり source code から machine code へ移り変わる中ですべての状態がcodeだと思うよ
に訂正
923: デフォルトの名無しさん [sage] 2016/07/12(火) 19:10:50.36 ID:OhKVznsb(1) AAS
>>916
逆だよ。ソースじゃ通じないがコードなら通じる
924: デフォルトの名無しさん [sage] 2016/07/13(水) 01:36:17.79 ID:/AeOD/09(1) AAS
>>919
機械語の源じゃなくて、ソフトウェアの源じゃないかな
中間コードはソースとは言わないでしょ
925(2): デフォルトの名無しさん [sage] 2016/07/28(木) 11:08:15.39 ID:UbVdigRT(1/4) AAS
Cを一通り終えてC++を勉強してます。
仮想関数という機能の意義というか、利点が分かりません。
そもそも親と違う処理をしたいから、派生クラスで関数を定義しなおすワケですよね?
関数の名前を変えれば済む話、というか、変えるべきなのでは?
http://www.s-cradle.com/developer/sophiaframework/tutorial/Cpp/virtual.html の
例で言えば、最初から
class Clock
{
void Action_beep()
{
// 時計がピーピー
}
};
class LaughClock : public Clock
{
public:
void Action_laugh()
{
// 時計がケタケタ
}
};
と定義しておいて、笑いたければ baby.Action_laugh(); で事足りると思うのです。
素人の目からは、異なる処理を行う関数に同じ名前を付けることは、百害あって一利無し、バグを誘発することくらいしか意味がないように思えます。
このサイトでも 「ここで注意していただきたいのは…」 と書かれてますが、注意が必要になったのは、異なる処理に同じ関数名をつけたことが原因ですよね?
この欠点を補えるほどの利点て、何かありますか?
926(1): デフォルトの名無しさん [sage] 2016/07/28(木) 12:07:53.88 ID:sTpn4H8D(1/2) AAS
>>925
たとえば fwrite() にしたって、呼び出した先では違う処理が動くというのはわかるよな?
fwrite_usbmemoryfile() とか、fwrite_ssdfile() なんてものがあったらいやすぎるだろう。
927(1): デフォルトの名無しさん [sage] 2016/07/28(木) 12:18:39.00 ID:6luxzfPz(1) AAS
>>925
例えば、アラーム機能を考えると
「設定された時間にビープ」と「設定された時間に笑わせる」と2つの機能を実装するか
「設定された時間に時計の種類を見てビープまたは笑わせる」って機能を実装することになるよね
仮想関数なら「設定された時間に鳴らす」って処理を書いておけば
「鳴らす」部分をビープやら笑わせる機能に差し替えることができる
ちゃんと書いとけば「やっぱ振動で」とかそういうのもアラーム機能は修正しなくて済む
928(2): デフォルトの名無しさん [sage] 2016/07/28(木) 13:17:17.72 ID:49cPLP5e(1/3) AAS
という机上の空論で作られたのが仮想関数です
あまり深く考えず
何かコールバックさせたいときに関数ポインタを隠蔽するために使う
と理解しておけば十分であり、問題は起きないです
少なくとも関数ポインタを使うよりは構文になっているという意味で安全
必要でない場合は使わなくてよいです
というかなるべく使わないように書くのがテクニックともいえます
制御フローはトップダウンかつ静的になるように心がけましょう
929(2): デフォルトの名無しさん [sage] 2016/07/28(木) 13:24:19.32 ID:UbVdigRT(2/4) AAS
皆様、レスありがとうございます。
せっかく解説してくださったのに、まだ理解できないようです。出来るの悪い子ですみませんorz
>>926
私の技量ではうまく言い表せないのですが‥
fwriteはバッファの内容をファイルに書き出すという動作において、プログラムからみれば
書き出し先がUSDでもSSDでも区別が必要ないと思います。
なので単一のfwriteでもOKかな‥と。
※強いて意識するのはfopen時だけですよね。
Action()はプログラムから処理内容を区別するので、本質が違うような気がします。
>>927
この「差し替え」は機能として理解できるのですが、
関数名から処理内容が一意に決まらなくなる‥という欠点が発生しますよね。
それが利点としてしっくりこないような…
それともオブジェクト名まで含めて判断する訓練を積めば克服できるものですかね?
先の例だとclock.Action()ならビープ、 baby.Action()なら笑う、みたいに。
Action()の処理内容が直感的に分かるオブジェクト名をつけないと、いちいち
クラス定義まで見返す手間がかえって増えそうな…
>>928
> という机上の空論で作られたのが仮想関数です
そう言われれば納得できるようなw
> 何かコールバックさせたいときに関数ポインタを隠蔽するために使う
> と理解しておけば十分であり、問題は起きないです
すみません。
初心者にはハードルが高いご解説なため、これからじっくり調べて考えて理解します…
930(2): 929 [sage] 2016/07/28(木) 13:38:39.41 ID:UbVdigRT(3/4) AAS
色々書きミスしてました。申し訳ありません。
誤: 出来るの悪い子ですみませんorz
正: 出来の悪い子ですみませんorz
誤: 書き出し先がUSDでもSSDでも区別が必要ないと思います。
正: 書き出し先がUSBメモリでもSSDでも区別が必要ないと思います。
931: デフォルトの名無しさん [sage] 2016/07/28(木) 13:56:36.04 ID:ini9YyYv(1/2) AAS
>>930
> クラス定義まで見返す手間がかえって増えそうな…
ちゃうねん
自分で派生クラス作るんやから見返す必要ないねん
蛇口クラスがあって「水圧管理」と「排水機能」を持ってるとするで
基底クラスが上の2つを持ってるわけやな
基本は水で出すとする場合基底クラスのActionが水や
けどお湯が欲しくなった場合蛇口は1個しかないから
派生クラスのActionでお湯を出すんや
この場合排水する目的は同じで
共通する機能を基底クラスが持ってるわけや
何が出てくるかが違うわけやから何が出てくるのかを自分で定義する
酒好きならシャンパン出してもええねん
932: デフォルトの名無しさん [sage] 2016/07/28(木) 14:01:51.36 ID:s42UkHaU(1) AAS
>先の例だとclock.Action()ならビープ、 baby.Action()なら笑う、みたいに。
>Action()の処理内容が直感的に分かるオブジェクト名をつけないと、いちいち
>クラス定義まで見返す手間がかえって増えそうな…
baby は LaughClockクラスのオブジェクトだよね?
LaughClockクラスのAction()が「笑う」なのは、そんなに変?
変数名の付け方が妥当かどうかは仮想関数とオーバーライドの話とは関係ないけど
(関数名の話がオブジェクト名の話にすり替わってる)
933: デフォルトの名無しさん [sage] 2016/07/28(木) 14:01:53.61 ID:ini9YyYv(2/2) AAS
>>930
関数の名前を変えたのを派生クラスで作ってしまったら
水専用の蛇口からお湯が出たりして苦情くるで
934: デフォルトの名無しさん [sage] 2016/07/28(木) 14:21:54.16 ID:VDwuXaep(1/2) AAS
机上の空論ってw
C#にもJavaにもあるinterfaceまで空論扱いする勢いだな
935: デフォルトの名無しさん [sage] 2016/07/28(木) 14:27:37.11 ID:VDwuXaep(2/2) AAS
>>929
>関数名から処理内容が一意に決まらなくなる‥という欠点が発生しますよね。
一意に決めたくないから仮想関数という仕組みがあるんだよ
それが何の役に立つのかは実務でソフト組んでれば分かるよ
936(1): デフォルトの名無しさん [sage] 2016/07/28(木) 14:29:27.00 ID:DlRIQQvn(1) AAS
>>928
>制御フローはトップダウンかつ静的になるように心がけましょう
動的な制御フローってあるん?
937: デフォルトの名無しさん [sage] 2016/07/28(木) 14:39:37.97 ID:sTpn4H8D(2/2) AAS
>>936
AIは全体で見れば動的と呼んでもいいんじゃ無いか?
同じ入力でも1回目と2回目じゃ結果が異なる可能性もある
938(1): デフォルトの名無しさん [sage] 2016/07/28(木) 15:27:25.46 ID:49cPLP5e(2/3) AAS
彼は自分で言っているように初心者なんだろうけど
初心者ゆえにプログラミングの基本的なスタイルを守っていて
それゆえに仮想関数の必要性がわからないのだろう
つまり、関数は常に必要に応じて自分で呼び出し
プログラミングは自分で流れを作っていくものだと
考えているのだろう
その限りにおいては、仮想関数の必要性は無いかもしれない
処理が分岐するならswitchすればよいだろう、位に考えているだろう
その初心は忘れないほうが良いと思うが
一度何かのフレームワークを触ってみるとよい
特にラムダがなかった時代の昔のフレームワークは全部仮想関数で解決しようとしていた
猫も杓子も仮想関数で多態が流行った時代があった
君の抜群のセンスなら非常に不毛であると感じるかもしれないが
同時に仮想関数が必要であった理由もわかるはず
そのうえで、自分で書く部分(今時プログラムを一から全部書く人はいない)に
俺俺フレームワークを構築するか、しないかは、よく考える必要がある
場面場面で
939(1): デフォルトの名無しさん [sage] 2016/07/28(木) 16:51:03.07 ID:UbVdigRT(4/4) AAS
>>938
> 一度何かのフレームワークを触ってみるとよい
この一言!
心の琴線に触れる? とはまさにこのことで、分かりました!
(というか、分かりかけてきました!)
たしかにフルスクラッチでプログラムを作成する状況なら仮想関数を
使わなくても済みそうで、「なぜ重複しない関数名で最初からクラスを設計しないんだろう?」と
疑問だったのですが、それがままならない開発環境もある、ってことですね。
正直、調べても、フレームワークの理解はアバウトなんですが、
それでも関数オーバーライドが必須となりそうな状況は納得できました。
今日を2chで最良の日と心に刻みつけておきます。ありがとうございました。
940: デフォルトの名無しさん [sage] 2016/07/28(木) 17:49:20.43 ID:xeepOtn0(1) AAS
>>939
フルスクラッチか既存のライブラリやフレームワークを利用するかというのは重要じゃない
インターフェースをどのように設計するかという問題
fwriteの例でいうとFILEという抽象化されたオブジェクトに対してfwriteを実行するだけで
オブジェクトの実態がexFAT上のファイルを扱うクラスのオブジェクトなのかNTFSなのか
あるいはもっと別のext4とかZFSとか呼び側が気にする必要が無い
941: デフォルトの名無しさん [sage] 2016/07/28(木) 18:54:53.34 ID:49cPLP5e(3/3) AAS
それは彼の今の認識ではswitchすりゃ良いじゃんってなるんだよ
実際に何かのフレームワークを触って、どういう風に仮想関数が使われているか
見て学んだほうが早いだろう
フレームワークのコールバックが関数ポインタかデリゲートかラムダか仮想関数か
何の方式を採用している分からないが、C++のフレームワークなら大概仮想関数だろう
特にフレームワークの場合はフレームワークのメインルーチンを勝手に変更できないという
制限があるので、(ソースコードすらない場合もある)
呼び出し元のコードを変えずに、とか、呼び出し元のコードを一本化して、とか
重要なキーワードを肌で感じることができるだろう
switchじゃどうにもならないということも、すぐに理解できるはず
あとは自分のプログラムに応用するかしないか、本人次第
一つ言えることは、概念上の問題より、運用上の問題のほうが大事
猫と犬は哺乳類クラスで猫はニャーと鳴き犬はワンと鳴く、とか言ったって
これは理解できている人にしかわからない説明なんだよ
942: デフォルトの名無しさん [sage] 2016/07/28(木) 21:55:49.56 ID:YFw1hd80(1) AAS
エントリポイントとなる関数を用意して
その中でifなり何なりで分岐させても、抽象化の目的としては達成されるしなー
943: デフォルトの名無しさん [sage] 2016/07/29(金) 06:52:14.12 ID:S0Kp402r(1/2) AAS
フレームワーク触るのもいいけど、フルスクラッチの場合も役に立つ
例えばウィンドウシステムの実装
大抵のウィンドウシステムでは、ボタンもダイアログもテキストエリアも同じウィンドウクラスから導出されている
なぜなら、マウスで触れる矩形領域の機能としてほとんど同じだからだ
ただ、それぞれクリックに対する反応とか表示内容なんかでちょっと違う部分が各部品ごとに山のようにあるので
違う部分だけメソッド(関数)単位で実装してオーバーライドする
もし仮想関数を使わずウィンドウシステムを書くことになったら、各部品のちょっと違う部分だけのために部品クラスをコピペで量産しないといけない
コピペで量産したクラスの弊害は、また別の話になるけど
ところでC++関係なくない?
単純にオブジェクト指向の質問じゃないのか
944: デフォルトの名無しさん [sage] 2016/07/29(金) 07:43:09.79 ID:S0Kp402r(2/2) AAS
見直してたら気付いた
>もし仮想関数を使わずウィンドウシステムを書くことになったら、各部品のちょっと違う部分だけのために部品クラスをコピペで量産しないといけない
訂正:
各部品のちょっと違う部分だけのためにフル機能の部品クラスをコピペで量産しないといけない
要は差分だけ書けば機能を実現するという目的にも仮想関数は使えるってこった
差分コーディングでググれば色々見られる
945: デフォルトの名無しさん [sage] 2016/07/29(金) 11:20:59.68 ID:/QPn21bb(1) AAS
オブジェクト指向の話どころか、抽象化する意味を聞かれてるのでは?
946: デフォルトの名無しさん [sage] 2016/07/29(金) 16:20:12.98 ID:QKf643uU(1) AAS
純粋仮想関数により抽象化したクラスはデザインパターンで使う
947: デフォルトの名無しさん [sage] 2016/08/06(土) 21:21:09.44 ID:CIMwAPv1(1) AAS
class A {
public:
funcA();
}
class B {
private
A a;
}
class C {
private
B b;
public:
funcC();
};
この状態でfuncCからfuncAを呼ぶには
class BにpublicなfuncBを追加してfuncBからfuncAを呼ぶようにする(funcC内でb.funcB)
これ以外にスマートなやり方って何かな?
変数はprivate、関数は必要があればpublicやprotectedの方がいいよね?
948: デフォルトの名無しさん [sage] 2016/08/06(土) 21:25:55.87 ID:NvZG+ERe(1) AAS
friend
949: デフォルトの名無しさん [sage] 2016/08/06(土) 21:34:07.09 ID:ywdq7rGj(1) AAS
ものによってはstaticとかでも行けるかも?
まあ、スマートっていう意味では、
CからAを触らせないのが一番スマートかもしれんけどね
950: デフォルトの名無しさん [sage] 2016/08/06(土) 22:03:23.24 ID:wD7Fq13i(1) AAS
> まあ、スマートっていう意味では、
> CからAを触らせないのが一番スマートかもしれんけどね
確かにこれが一番スマートやな
他のやり方としてはBのaをprotectedにしてCはBをprivate継承するとかな
951: デフォルトの名無しさん [sage] 2016/08/07(日) 08:40:15.71 ID:zBYc/KkC(1) AAS
>>948-9500
ありがとう!
952(1): デフォルトの名無しさん [sage] 2016/08/10(水) 19:58:07.55 ID:oJSizC1Q(1/2) AAS
func()の中でswitch()で分岐してる状態で
case 1: 何かやる break;
case 2: 何かやる break;
func()を書き換えずに何かやる部分をプロジェクトによって変えるような事はできる?
953(1): デフォルトの名無しさん [sage] 2016/08/10(水) 20:29:50.53 ID:FPLZcb1n(1) AAS
関数ポインタ仮想関数ラムダ
954(1): デフォルトの名無しさん [sage] 2016/08/10(水) 20:31:27.03 ID:DNEsHj4R(1) AAS
プロジェクトごとに条件を定義して #define, #ifdef, #ifndef, #else, #endif などで切り替える
955: デフォルトの名無しさん [sage] 2016/08/10(水) 21:24:43.34 ID:oJSizC1Q(2/2) AAS
>>953
色々あるんだね
>>954
プロジェクトが増えるとfuncも書き換えないといけない
956(2): デフォルトの名無しさん [sage] 2016/08/11(木) 00:06:31.55 ID:FqLT9pgZ(1) AAS
case 1: func_case1(); break;
case 2: func_case2(); break;
...
とやってプロジェクトごとに異なるfunc_caseXの定義を書けばいいんでは
957(2): デフォルトの名無しさん [sage] 2016/08/11(木) 05:28:06.54 ID:Zd798CT0(1/4) AAS
>>956
> func()を書き換えずに
958: デフォルトの名無しさん [sage] 2016/08/11(木) 05:29:47.92 ID:Zd798CT0(2/4) AAS
>>957
って事だから競合起こさないようにした方がよくね?
959: デフォルトの名無しさん [sage] 2016/08/11(木) 10:12:33.21 ID:xfJcHpdP(1/2) AAS
funcを書き換えずにってのは一度書いたfunc自体のソースだけはどのプロジェクトでも書き換えずに使うって意味じゃないのか
960(3): デフォルトの名無しさん [sage] 2016/08/11(木) 11:20:31.32 ID:Zd798CT0(3/4) AAS
プロジェクト1
func()
プロジェクト2
func()
ここまでok
プロジェクト3
プロジェクト1
func()->func_case1()
プロジェクト2
func()->func_case1()
どっち呼ぶんや?
961: デフォルトの名無しさん [sage] 2016/08/11(木) 11:22:12.26 ID:ZnWKVyt1(1) AAS
そういう意味だともうよ
だから、関数ポインタ仮想関数ラムダ関数オブジェクト
まぁこれはC++での呼び名だが
何らかの方法でコードブロックをコールバックしてもらうしかないと思うよ
一般的によく行われることだし問題ないっしょ
962(1): デフォルトの名無しさん [sage] 2016/08/11(木) 13:19:34.88 ID:xfJcHpdP(2/2) AAS
>>960
そのプロジェクト3でfunc()を呼んだらプロジェクト1と2のどっちのfunc()を呼ぶんだ?
963(1): デフォルトの名無しさん [sage] 2016/08/11(木) 14:27:00.61 ID:Zd798CT0(4/4) AAS
>>962
func自体は変更無しなんだから問題じゃなくね?
964: デフォルトの名無しさん [sage] 2016/08/11(木) 21:21:58.58 ID:TQheNK/m(1) AAS
>>960
そのプロジェクトってなんだ?
965(2): デフォルトの名無しさん [sage] 2016/08/11(木) 21:39:36.85 ID:GJmRLzEl(1) AAS
>>963
プロジェクト1とプロジェクト2でfuncの(最終的な)動作は変わるんだろ
その両方の動作を使いたいからプロジェクト3ではプロジェクト1,2両方を取り込んでいるんであって
そうしたからには使いたい動作にあわせて意図的に呼び分けができないとだめだろ
966(1): デフォルトの名無しさん [sage] 2016/08/12(金) 01:02:36.03 ID:tIcwp4Gc(1/2) AAS
なんで両方の動作を使いたいって話になってるんだ?
プロジェクト1でfunc()を呼び出したらプロジェクト1のfunc_caseXXX()が呼ばれる
プロジェクト2でfunc()を呼び出したらプロジェクト2のfunc_caseXXX()が呼ばれる
プロジェクト3でfunc()を呼び出したらプロジェクト3のfunc_caseXXX()が呼ばれる
プロジェクトがいくら増えてもfunc()の中身自体は修正を必要としない
ということがやりたいんだろ?>>952は
967(2): デフォルトの名無しさん [sage] 2016/08/12(金) 08:55:39.80 ID:V4dr4yFb(1/2) AAS
>>965
プロジェクト3ではプロジェクト1と2の両方のfunc_case呼ぶってなんで?
プロジェクト3専用のfunc_caseだろw
968(2): デフォルトの名無しさん [sage] 2016/08/12(金) 10:09:26.57 ID:A6nfo0WT(1) AAS
>>956,966,967のやり方じゃだめだって>>957=958=960=963が>>960で例を出して言ってるんだろ
で>>960の例にはfuncの中身以前に問題があるんじゃないのという疑問だろ
969: デフォルトの名無しさん [sage] 2016/08/12(金) 12:00:33.75 ID:tIcwp4Gc(2/2) AAS
>>968
つまりどういうこと?
970: デフォルトの名無しさん [sage] 2016/08/12(金) 12:28:25.41 ID:V4dr4yFb(2/2) AAS
>>968
>>967ではむしろ>>965を否定したつもりなんだが
971(1): デフォルトの名無しさん [sage] 2016/08/13(土) 09:29:25.77 ID:ShTSXbfa(1/7) AAS
pを使った処理はAとBどっちに書くのがセオリ?
try {
p = new int;
// A
}
catch() {
// 失敗時の処理
return;
}
// B
972(1): デフォルトの名無しさん [sage] 2016/08/13(土) 11:58:33.65 ID:xf3MhneS(1) AAS
書き手がなにを重視しているかの視点・哲学の話だからどっちでもいい
973(1): デフォルトの名無しさん [sage] 2016/08/13(土) 12:22:48.55 ID:zvhXM4IK(1) AAS
その「pを使った処理」で発生した例外をそのcatchで捕まえたいかどうか次第じゃないかと。
974: デフォルトの名無しさん [sage] 2016/08/13(土) 12:37:38.79 ID:ShTSXbfa(2/7) AAS
つまり
例外が発生する処理を1つのtryブロックでまとめるか
処理毎にtryブロックを用意するかの違いって事かな
try { p = new int; /* pを使った処理 */ q = new int; } catch() { return; }
try { p = new int; } catch() { return; }
// pを使った処理
try { q = new int; } catch() { return; }
こんな感じ?
975(1): デフォルトの名無しさん [] 2016/08/13(土) 12:49:18.79 ID:sDKArTxu(1/5) AAS
全部間違いcatch()なんてコンパイル通らないし
そもそもそんなところでnewなんて使うな
976(2): デフォルトの名無しさん [sage] 2016/08/13(土) 13:11:33.14 ID:woc51egB(1/3) AAS
try-catchもなんだかんだで行数食うし、
どうしても分離できないところ以外は、なるべくまとめた方が良さげ
977(2): デフォルトの名無しさん [sage] 2016/08/13(土) 13:27:50.95 ID:ShTSXbfa(3/7) AAS
>>975
突っ込むなら本題でつっこんでくれ
例に対して的外れな突っ込みになってるぞ
>>976
そういうもんなんだな
978: デフォルトの名無しさん [] 2016/08/13(土) 13:35:00.47 ID:sDKArTxu(2/5) AAS
>>977
本題?そんなものにセオリなんてないというのが答え
そもそも「pを使った処理」の内容が分からないのに
979(2): 976 [sage] 2016/08/13(土) 13:41:10.91 ID:woc51egB(2/3) AAS
ごめん>976の日本語おかしかった
誤:
どうしても分離できないところ以外は
正:
本当は分けてcatchしたいのに、まとめてtryブロックに突っ込むと
そのままでは例外クラスの関係でまとまってしまう(分離に一手間かかる)ところ以外は
どうやら脳内補完してくれたみたいで、感謝
>>977
あくまで個人的な見解なので、メリット・デメリットはあると思う
tryブロックが長すぎても大変だろうしね
980(2): デフォルトの名無しさん [] 2016/08/13(土) 13:56:22.46 ID:sDKArTxu(3/5) AAS
何を大変がってるのか理解不能
最初からnew intなんて馬鹿なことしなけりゃいいのに
981(2): デフォルトの名無しさん [sage] 2016/08/13(土) 14:04:27.20 ID:woc51egB(3/3) AAS
>>980
例文としてnew intを使ったのは質問者で(さらにその例文には特に意味もない)
「大変」という言葉を使ったのは質問者じゃなく俺(>979)なわけだが
一体誰に何をレスしてるんだ?
982: デフォルトの名無しさん [sage] 2016/08/13(土) 14:07:57.10 ID:ShTSXbfa(4/7) AAS
>>979,981
そうだなありがとう
煽りたがりなんだよたぶん
>>980
最初から的外れな指摘しなけりゃいいのに
983: デフォルトの名無しさん [sage] 2016/08/13(土) 14:08:54.05 ID:ShTSXbfa(5/7) AAS
>>972-973もアンカ付けてなかったけどありがとね
984(1): デフォルトの名無しさん [] 2016/08/13(土) 14:09:23.19 ID:jehnS6hp(1) AAS
まあ、あれだ。
いつもの「空気の読めない君」が登場しただけだから気にするな。
質問者の意図が理解できずに、会話にならないアの字の人が一人か二人いる。
985(2): デフォルトの名無しさん [] 2016/08/13(土) 14:19:57.80 ID:sDKArTxu(4/5) AAS
>>981
両方にレスしてる
>>971の「pを使った処理」をBに書いてもいいなら、「pを使った処理」では例外が発生しないものとしていいんだよな?
だったらどっちでもいいし
newでbad_alloc発生するかもしれないし「pを使った処理」で別の例外が発生するかもしれないよ。どうしたらいいの(泣)
ってことなら
まとめたとしても
catch(bad_alloc e) {
return;
}
catch(...) {
delete p;
return;
}
とでもすればいいだけだし議論するようなことじゃない
catch()とか書いてる時点でC++の例外処理について何もわかっていないんじゃないかと
そもそもnew失敗時にreturnって何をしたいのか意味不明なんですけどね(笑)
986: デフォルトの名無しさん [] 2016/08/13(土) 14:29:14.04 ID:sDKArTxu(5/5) AAS
>>984
出た「空気読め」
無能はいつだってこうだね
しまいには「ア」呼ばわりして勝利宣言w
987: デフォルトの名無しさん [sage] 2016/08/13(土) 14:39:41.75 ID:ShTSXbfa(6/7) AAS
>>985
catchした場合はBの処理はされないという意味のreturnなんだが読み取れなかったか?
それともわざわざ「catchブロックはこの際重要ではない」と書けばよかったか?
引っ込みがつかなくなって狂っただけか?
988: デフォルトの名無しさん [sage] 2016/08/13(土) 14:46:10.18 ID:ShTSXbfa(7/7) AAS
>>985
途中送信失礼
お前がやってる的外れな指摘はこういう事なんだがわかるかな?
catch(const bad_alloc &e)だろ
そこは今重要じゃないだろ?
989: デフォルトの名無しさん [] 2016/08/13(土) 15:49:08.98 ID:SZzp1Vb3(1) AAS
はぁ、、、勝利とか何の話なのかな?
議論に勝ち負けがあると思ってる時点でちょっと斜め上。
990: デフォルトの名無しさん [sage] 2016/08/13(土) 18:35:59.65 ID:OPjVywq7(1) AAS
回答者同士で煽りあってるのかと思えば質問者と回答者だったのか
どっちがセオリーというかpを使った処理次第だし失敗時の処理次第ってところでどっちもあり
>そもそもnew失敗時にreturnって何をしたいのか意味不明なんですけどね(笑)
Bの場合に例外を飛ばさずに処理を終了させたい(Bを実行しない)ってことだろ
991(2): デフォルトの名無しさん [sage] 2016/08/13(土) 23:39:33.39 ID:CLd1bccm(1) AAS
ループ展開やブロッキングのような最適化手法って他にありますか?
あと並列化特有の最適化の方法とかがあるなら教えて下さい
992: デフォルトの名無しさん [] 2016/08/14(日) 00:04:41.36 ID:z6U1tRVC(1) AAS
次スレ
2chスレ:tech
993(1): デフォルトの名無しさん [sage] 2016/08/14(日) 18:24:32.93 ID:DuaY2f9q(1) AAS
>>991
OpenMPの話?
994(1): デフォルトの名無しさん [sage] 2016/08/15(月) 10:29:06.41 ID:SYEcbM5V(1) AAS
コンパイラがC/C++ならOpenMPの話しはここでもいいんじゃないかな
レスが付くかどうかはわからんが
>>991
wikipediaで"コンパイラ最適化"で項目があるから、ざっくりとわかるとおもう
995: デフォルトの名無しさん [sage] 2016/08/15(月) 10:39:36.48 ID:4wJ3nkHn(1) AAS
>>993
>>994
openMPに限らず他に最適化手法が無いかなと思って聞きました
見たところwikiにもいろいろ載ってました
ありがとうございます
996: デフォルトの名無しさん [sage] 2016/08/15(月) 15:16:30.69 ID:ZZZ997rF(1/2) AAS
隔離病棟って何だよ
997: デフォルトの名無しさん [sage] 2016/08/15(月) 15:32:27.02 ID:ywF/52Nh(1) AAS
俺の家だよ
998: デフォルトの名無しさん [sage] 2016/08/15(月) 19:11:52.07 ID:bftlQCDN(1) AAS
独り占めすんなよ。
「俺たちの家」と言うべきだろ。
999: デフォルトの名無しさん [sage] 2016/08/15(月) 19:14:58.12 ID:E6/w/wVK(1) AAS
ナース服来たメイドさんうらやま
1000: デフォルトの名無しさん [sage] 2016/08/15(月) 19:20:16.07 ID:ZZZ997rF(2/2) AAS
梅酒
1001(1): 1001 [] Over 1000 Thread AAS
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
life time: 261日 5時間 49分 42秒
1002(1): 1002 [] Over 1000 Thread AAS
2ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 2ちゃんねる専用ブラウザからの広告除去
★ 2ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
http://premium.2ch.net/
http://pink-chan-store.myshopify.com/
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.028s