2ちゃんねる スマホ用 ■掲示板に戻る■ 全部 1- 最新50    

■ このスレッドは過去ログ倉庫に格納されています

【信者】C++の問題点【アンチ】

1 :デフォルトの名無しさん:2008/10/10(金) 09:13:53 .net
C++の問題点について語るスレです

C++ってなんであんなに肥大化しちゃったの?
http://pc11.2ch.net/test/read.cgi/tech/1219902495/

2 :デフォルトの名無しさん:2008/10/10(金) 11:05:40 .net
このスレッドは天才チンパンジー「アイちゃん」が
言語訓練のために立てたものです。

アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。


3 :デフォルトの名無しさん:2008/10/10(金) 13:14:50 .net
だからー いちいち禁止しなくても
本物の || && とおんなじ方法で動くようにすればいいだけだろ

4 :デフォルトの名無しさん:2008/10/10(金) 18:04:14 .net
&&のオーバーロードなんてgotoやlongjmpみたいなもの
使う方が悪い

5 :デフォルトの名無しさん:2008/10/10(金) 19:05:52 .net
もう飽きた、他のネタ頼むわ

6 :デフォルトの名無しさん:2008/10/10(金) 19:26:39 .net
そうだな
function-try-blockの話でもしようか

7 :デフォルトの名無しさん:2008/10/10(金) 20:39:02 .net
ライバルが現れた

gcjって使ってる人います?
http://pc11.2ch.net/test/read.cgi/tech/1046627795/

8 :デフォルトの名無しさん:2008/10/10(金) 20:44:16 .net
http://shootout.alioth.debian.org/
見ると、ATSって言語が異常に速いんだが
誰か使ってる人いる?

9 :デフォルトの名無しさん:2008/10/11(土) 11:16:32 .net
|| && 問題なんて「過去との互換性をとるために保守してあるだけで、現在は使わないでください」的なものだろ

Javaだって「将来無くすことになったので、このメソッドは使わないで新しいの使ってね」って言うじゃん。
で、実際に無くすか、互換性のために残しておくか。
どっちが正しいかは白黒なんてつかん

10 :デフォルトの名無しさん:2008/10/11(土) 11:39:04 .net
なんだこの頭の悪いレスは
アンチのなりすましですか?

11 :デフォルトの名無しさん:2008/10/11(土) 19:26:07 .net
ウドンズのCreateWindowみたいなものか

12 :デフォルトの名無しさん:2008/10/11(土) 20:36:58 .net
CreateWindowはObsoleteじゃないだろ

13 :デフォルトの名無しさん:2008/10/11(土) 23:59:55 .net
C++に限らずif (x) if (y)のシンタックスシュガーとして&&は時々便利に感じる。

14 :デフォルトの名無しさん:2008/10/12(日) 04:15:14 .net
アイちゃんちょっと頑張り過ぎじゃね?

15 :デフォルトの名無しさん:2008/10/12(日) 04:58:04 .net
>>13
時々じゃなくてそれに基づいてプログラムを書いてるわけだが
お陰でオーバーロード時に問題が生じてしまったのは禿の責任ではない

16 :デフォルトの名無しさん:2008/10/12(日) 20:00:28 .net
&& や || をオーバーロードなんてすんなってこった。

17 :デフォルトの名無しさん:2008/10/12(日) 21:43:39 .net
正しい動作するようにかける方法を
関数以外で提供すれば言いだけ

18 :デフォルトの名無しさん:2008/10/12(日) 22:52:55 .net
正しいも動作も何も、&&, ||が論理演算である必要すらないのだが。
+を掛け算、*を足し算にして、足し算優先な数式すらつくれるというのに。

19 :デフォルトの名無しさん:2008/10/12(日) 23:19:21 .net
それはAdd()という名の引き算関数作ることと何が違うの?

20 :デフォルトの名無しさん:2008/10/13(月) 00:02:32 .net
指数演算ならMul()という名前の足し算関数はありうる

21 :デフォルトの名無しさん:2008/10/13(月) 00:06:49 .net
>>19
汗の世界では良くあること。

22 :デフォルトの名無しさん:2008/10/13(月) 00:26:54 .net
>>19
全然違うぜ。

Add(Mul(1, 2), 3)
はあくまでmulを解釈した後addを解釈するし
Mul(Add(1,2), 3)
はAddを先に解釈する
1+2*3

1*2+3
としたところで、必ず*が先に解釈される。

プログラムの書き手が解釈順位を決めるのが関数
演算子はコンパイラがすでに解釈順位を決めている。

23 :デフォルトの名無しさん:2008/10/13(月) 00:31:04 .net
演算子はコンパイラがすでに解釈順位を決めている。
にらそれと同じことをすればいい

24 :デフォルトの名無しさん:2008/10/13(月) 00:31:53 .net
>>23
まあ、俺もうまく説明できてないが、
問題点を理解できてないのに噛み付かなくてもいいよ。

25 :デフォルトの名無しさん:2008/10/13(月) 02:18:29 .net
>>24
で、そういうことをするプログラマーが問題ではないと

26 :デフォルトの名無しさん:2008/10/13(月) 11:11:10 .net
自由と責任は表裏一体。
低レベルの開発ならC並の何でもできる自由度が必要だけど、アプリよりになればなるほど勝手な振る舞いはしてほしくない。
今はハードをベタベタに触る言語とGUIやwebをらくらく使う言語と使い分ける時代じゃねーのかね。
C++は全部やろうとして、肥大化してるし、トラップも増えている感じ。

何でもできるけど、責任はプログラマ側ねという言語は必要だけどすべての分野で使うべきかどうかは疑問だね。

27 :デフォルトの名無しさん:2008/10/13(月) 12:30:57 .net
本当に自由な言語には使わない自由もあるだろ。
そもそもC++をすべての分野で使うべきなんて誰も言ってないのに勝手に勘違いして
GCを全否定したり無駄な継承したりするのが義務だと思い込んでるだけ。

28 :デフォルトの名無しさん:2008/10/13(月) 12:33:54 .net
分かってる人は分かった上でC++使ってればいいんだよ。
分からない人が「たくさん」いる現場で使うにはC++はしんどい言語だってこと。

29 :デフォルトの名無しさん:2008/10/13(月) 12:33:56 .net
流れを読まずにかきこ
GCって何?

30 :デフォルトの名無しさん:2008/10/13(月) 12:35:07 .net
分かってないのに分かった気になってる人がたくさんいる言語

31 :デフォルトの名無しさん:2008/10/13(月) 12:36:31 .net
Graphics Context
Grand Central
Gabage Collection

32 :デフォルトの名無しさん:2008/10/13(月) 13:40:52 .net
nintendo

33 :デフォルトの名無しさん:2008/10/13(月) 15:39:46 .net
前スレ984、少し改変

あなたは○×言語の問題点を指摘されました
1)「おまえは○×言語もわからない馬鹿だから問題じゃない!」とレッテルを貼る
2)「その問題は俺は(普通は)回避できる(使わない)から問題じゃない!」と論点を摩り替える
3)「△□言語にも同じ問題があるから問題じゃない!」と論点を摩り替える
4)「〜〜という理由でそれは問題とは言えないのではないか?」と論理的に問題無いことを証明する
5)「確かにそこには問題があるね」と素直に認める

34 :デフォルトの名無しさん:2008/10/13(月) 16:04:48 .net
2と4の違いはなんだ
属人性の排除とかいうやつか

35 :デフォルトの名無しさん:2008/10/13(月) 16:30:24 .net
2はオールマイティーだな
どんな言語・問題点だろうと普通は使わないからおkって答えればいい

36 :デフォルトの名無しさん:2008/10/13(月) 16:36:29 .net
包丁やナイフにも人をさせる問題があるが世界中で愛されている

37 :デフォルトの名無しさん:2008/10/13(月) 17:02:14 .net
ナイフなんかは問題が明らかになれば規制される物だよな

38 :デフォルトの名無しさん:2008/10/13(月) 17:02:36 .net
包丁やナイフは人をさせるということが予測がつくが、
C++の演算子オーバーロードや例外は想像を超えた害悪があるから問題なんでしょ。

39 :デフォルトの名無しさん:2008/10/13(月) 17:03:43 .net
つーか包丁は役に立つが
&&のオーバーロードは罠なだけで役に立たん

40 :デフォルトの名無しさん:2008/10/13(月) 17:11:25 .net
追加
6)「問題はあるけど愛されてるから無問題」と論点を摩り替える
もう何でもアリだなwww

41 :デフォルトの名無しさん:2008/10/13(月) 17:16:17 .net
演算子のオーバーロードは無いと困る機能でもないのに
問題を孕んでるのが嫌らしいよな。結局、無い方がいい。

42 :デフォルトの名無しさん:2008/10/13(月) 17:27:27 .net
>>41
演算子のオーバーロードは無いと困るだろう

43 :デフォルトの名無しさん:2008/10/13(月) 17:28:40 .net
演算子オーバーロード全部がまずいのではない
&& || ,
がまずいだけだ

さしあたりはな

44 :デフォルトの名無しさん:2008/10/13(月) 17:31:09 .net
()、->、newなんかは大活躍ですよ

45 :デフォルトの名無しさん:2008/10/13(月) 17:31:25 .net
>>40
論点うんぬんは関係ない
ただ根拠がいい加減なだけ

46 :デフォルトの名無しさん:2008/10/13(月) 17:36:35 .net
operator++()の引数はいらない子

47 :デフォルトの名無しさん:2008/10/13(月) 17:39:00 .net
>>44
ユーザ定義の演算子を作らなくても実現出来ると思うんだけど

48 :デフォルトの名無しさん:2008/10/13(月) 18:07:22 .net
そりゃそうだ。どれも関数呼び出しに還元できる。
それ言ったらどの演算子も多重定義できる必要は無い。
複素数やベクトルでa + bと書きたいのと同じようにスマートポインタではp->mと書きたい。

49 :デフォルトの名無しさん:2008/10/13(月) 18:41:28 .net
屋上屋ってやつか

50 :デフォルトの名無しさん:2008/10/13(月) 18:51:31 .net
operator->は生ポインタを隠すのに有効

と思ってたけどp.operator->()って普通に出来ちゃうのな
あまり意味がないような気がしてきた

51 :デフォルトの名無しさん:2008/10/13(月) 19:25:06 .net
あまり意味がないことを悟った上で使えってことじゃね

52 :デフォルトの名無しさん:2008/10/13(月) 20:33:58 .net
覚えたての厨房が粋がってトリッキーなオーバーロードをしないように気をつけないといけないのが面倒くさい。

53 :デフォルトの名無しさん:2008/10/13(月) 20:43:27 .net
>>50
そう、隠すためではなく糖衣構文を提供するためのもの。

54 :デフォルトの名無しさん:2008/10/14(火) 05:32:02 .net
お前らいい加減にしろよ
前スレは10年近く前のネタを1000もかけて焼き直しただけだろ
これ以上一体何を続けるつもりだ?

http://www.kh.rim.or.jp/~nagamura/misc/stroustrup-interview.html

55 :デフォルトの名無しさん:2008/10/14(火) 09:11:42 .net
その偽ネタインタビューと現在のC++の問題点となんの関係がある?

56 :デフォルトの名無しさん:2008/10/14(火) 09:21:25 .net
>>55
ヒント:読んだばかり

57 :デフォルトの名無しさん:2008/10/14(火) 10:41:05 .net
>>55
え?ネタって書いてあるのが読めなかったの?
え?書いてある内容がどんなもんかすらわからなかったの?
え?もしかしてニホンゴワカラナイ?

58 :デフォルトの名無しさん:2008/10/14(火) 11:14:57 .net
>>57
日本語でおk

59 :デフォルトの名無しさん:2008/10/14(火) 18:12:29 .net
前スレと>>54見てこれなら、真性馬鹿はゆとりとは一味違うな

60 :デフォルトの名無しさん:2008/10/15(水) 10:02:39 .net
横だが本気で意味わからん
真正馬鹿でもゆとりでもいいから是非日本語で詳しく解説してくれ

ちなみに前スレって一言でまとめると
「斜め上発言でアンチからフルボッコされるドM信者スレ」
だよ?

61 :デフォルトの名無しさん:2008/10/15(水) 18:03:39 .net
斜め上発言で信者からも「アンチからも」フルボッコされるドMアンチもいました

62 :デフォルトの名無しさん:2008/10/15(水) 18:25:37 .net
え?そんなの覚えないけど?
すごく興味あるから印象操作じゃないならポインタ示してね

63 :デフォルトの名無しさん:2008/10/15(水) 22:58:32 .net
>>60
すごく興味あるから印象操作じゃないならポインタ示してね

64 :デフォルトの名無しさん:2008/10/16(木) 10:17:02 .net
前スレ987
>まぁ信者は問題点に納得した時点で沈黙するからなぁ
>結局新規の馬鹿信者が斜め上発言してアンチがフルボッコにするループはいくらでも続く
前スレ988
>&&批判に反発してた連中は、終わった話を何度も蒸し返して
>無駄に傷口広げてる感じだったな
>しかも禿の仕様ミスであること自体は認めているから
>まともに・論理的には反論できずに
>そんなのは些細なことで問題にするほうがおかしいとか
>斜め上の話ばかりになる

65 :デフォルトの名無しさん:2008/10/16(木) 10:32:36 .net
ところで、&&や||をオーバーロードすることの何が問題なの?


66 :デフォルトの名無しさん:2008/10/16(木) 18:38:55 .net
結論から言うと、演算子オーバーロードはSTL向けの関数オブジェクト作るためだけに使え、
ということだな。

67 :デフォルトの名無しさん:2008/10/16(木) 19:47:53 .net
, || && は boost::spirit で活躍しているよ。

68 :デフォルトの名無しさん:2008/10/16(木) 21:27:42 .net
>>66
なぜそれが結論なのかが知りたいのですけど?
一体何が問題なのですか?


69 :デフォルトの名無しさん:2008/10/16(木) 22:10:53 .net
std::cout << "banana" << count << std::endl;

(ノ ゚Д゚)ノ ==== ┻━━┻

70 :デフォルトの名無しさん:2008/10/16(木) 23:04:10 .net
コンテナ継承させてよぅ

71 :デフォルトの名無しさん:2008/10/16(木) 23:24:11 .net
ただの質問スレだったら、protected継承でいいじゃないって答えるところだな。

72 :デフォルトの名無しさん:2008/10/16(木) 23:49:18 .net
>>65
組み込み型に対する&&や||は短絡といって、
左から順に評価していって、
結果が分かったらそれ以降の評価を行わない仕組みになってる。
たとえば、
bool f1(); bool f2();
if ( f1() && f2() )
という式があったとすると、f1が偽の場合、f2は評価されないことが保証される。

しかし、&&や||のオーバーロードの場合は関数呼び出しと解釈されるため、短絡がない。
それどころか、関数呼び出し順序は標準に規定されていないため、
どちらが先に評価されるかすら分からない。
my_bool b1(); my_bool b2();
if ( b1() && b2() )
この場合、b1とb2のどちらが先に評価されるか分からない(処理系依存)。

分かりにくいバグの元になる、コードの可搬性を損なう、などの理由から
&&や||のオーバーロードは推奨されない。

73 :デフォルトの名無しさん:2008/10/17(金) 00:22:41 .net
>>72
つまり、&&オーバーロードは、+等のオーバーロードとは違う解釈で実行されるってことなの?
それなら、大きな問題だなぁ...


74 :デフォルトの名無しさん:2008/10/17(金) 00:26:31 .net
>>組み込み型に対する&&や||は短絡といって、

それと同じ構造にすればいいだろ

75 :デフォルトの名無しさん:2008/10/17(金) 00:29:42 .net
>>74
C#とかそれを目指している。
C++でもBoost.Lambdaは頑張った。

あと今から同じ構造になる仕組みをC++に持ち込んだとしても、
「互換性のため」現状の&&と||もそのまま残ること間違いない。

76 :デフォルトの名無しさん:2008/10/17(金) 01:43:05 .net
比較的どうでもいい豆知識だな

77 :デフォルトの名無しさん:2008/10/17(金) 01:51:46 .net
遅延評価の考え方がどうでもいい豆知識っすか
Cにどっぷりはまるとそうなっちゃうのね

78 :デフォルトの名無しさん:2008/10/17(金) 02:33:00 .net
短絡評価 short-circuit evaluation と遅延評価 lazy evaluation はまったくの別物だぞ
遅延評価は、必要になるまで変数の値の計算を先延ばしにするHaskellのアレだ

79 :デフォルトの名無しさん:2008/10/17(金) 02:37:48 .net
同じ様なもんだろ
右オペランドを遅延評価することを短絡評価という

80 :デフォルトの名無しさん:2008/10/17(金) 02:44:31 .net
じゃあ遅漏評価は?


81 :デフォルトの名無しさん:2008/10/17(金) 03:07:21 .net
>79
遅延評価はもっと広い意味の言葉だから混同するとややこしい。


82 :デフォルトの名無しさん:2008/10/17(金) 08:55:24 .net
>>64
何の指摘にもなってないよ

83 :デフォルトの名無しさん:2008/10/17(金) 09:10:07 .net
オーバーロード関数のDLLが・・・

84 :デフォルトの名無しさん:2008/10/17(金) 09:13:17 .net
>>83
日本語でok

85 :デフォルトの名無しさん:2008/10/17(金) 10:40:56 .net
オーバーロードしたら&&が論理和どころか論理演算ですらある必要がないので、
通常と同じ動作にしたらいいじゃんという主張は無意味だろ。


86 :デフォルトの名無しさん:2008/10/17(金) 11:07:09 .net
演算子の元の意味と大きく異なるオーバーロードは駄目だろ
おまえは+が加算である必要が無いからって乗算にするのか?

87 :デフォルトの名無しさん:2008/10/17(金) 12:04:19 .net
> 演算子の元の意味と大きく異なるオーバーロードは駄目だろ

そこで << ですよ

88 :デフォルトの名無しさん:2008/10/17(金) 12:10:38 .net
>>72
良く分からんが
if ( b1 && b2 )

if ( b1.operator&&(b2) )
と等価じゃないの?


89 :デフォルトの名無しさん:2008/10/17(金) 13:09:18 .net
常識という眼鏡で僕達の世界はのぞけやしないのさ
夢を忘れた古いプログラマーたちよ

アンドじゃないアンドじゃない
素敵な世界

90 :デフォルトの名無しさん:2008/10/17(金) 15:03:38 .net
>>88
operator&&() が my_bool のメンバならね。
でも
    bool operator&&(const my_bool& a, const my_bool& b)
かも知れない。
更に、b1 が左辺値ではなく my_bool を戻す式だったとき、
やっぱり b2 とどっちが先に評価されるかは判らない。

91 :デフォルトの名無しさん:2008/10/17(金) 16:06:02 .net
>>90
引数の評価順を重要視する意味がよくわからん
引数の時点で、真偽がわかったとしても関数から抜け出す手段は無いとおもうが?

b1 && b2 && b3
の式の場合
operator&&(operator&&(b1, b2), b3)
となって、operator&&(b1, b2)が偽の場合でも、一番外側のoperator&&()が実行されるから嫌だって事なら、ちょっとだけ理解できるかもしれないが
だからと言って、C++の欠陥だと大声で言うようなものでも無いと思うのですが


92 :デフォルトの名無しさん:2008/10/17(金) 16:52:03 .net
>>91
短絡評価のメリットが解らない、ってこと?

93 :デフォルトの名無しさん:2008/10/17(金) 17:17:31 .net
>>92
短絡評価のメリットを受けられるほど長い論理式を使うつもりなのですか?
それとも、短絡評価のメリットを受けられるほどのif文の山を築く気ですか?


94 :デフォルトの名無しさん:2008/10/17(金) 17:41:19 .net
話がまた斜め上の方向に捩れてるな

>>91
if 式 文
で式の内容如何によらず文が評価されていいと思ってるのか?
遅延評価無しではif文を関数化することは出来ない
だから禿も?:はoperator化していない
にもかかわらず、同様の機能を持っている&&や||をoperator化しているのが
マヌケだという話だろ

>>93
言語仕様の問題をプログラミングスタイルの方向に摩り替えたい人発見

95 :デフォルトの名無しさん:2008/10/17(金) 18:00:57 .net
バグの原因は小さいものだから
大きな問題ではないと考えるのも無理はない

96 :デフォルトの名無しさん:2008/10/17(金) 18:05:33 .net
INT i=1,j=1; //なんかint的なクラスだと思いね

i++ || j++;
cout << i << "," << j;

||がオーバーロードされていなければ「2,1」が表示される
されていれば「2,2」が表示される



open(file) && abort();

&&がオーバーロードされていなければ、ファイルオープンに成功すれば処理が続行される
されていればファイルオープンに成功したのに異常終了する

97 :デフォルトの名無しさん:2008/10/17(金) 18:32:16 .net
>>94
論理式は論理式だろ?
if文や三項演算子とは関係ないんじゃない?

>>96
むしろ、その使い方が、言語仕様の悪用だと思います


98 :デフォルトの名無しさん:2008/10/17(金) 18:46:18 .net
>>97
いや、ショートサーキットの&&や||はifの変種みたいなもんだぞ
C/C++に引きこもっているうちは分からないかもしれないが、
他の言語もやってみれば分かるよ

99 :デフォルトの名無しさん:2008/10/17(金) 18:52:24 .net
つーか短絡評価しないなら&や|だけでいい
何のためにわざわざ&&や||が用意されてると思ってるんだ

100 :デフォルトの名無しさん:2008/10/17(金) 18:54:39 .net
>>99
それもちょっと違うけどな
1 && 2は真だけど 1 & 2は0だし

101 :デフォルトの名無しさん:2008/10/17(金) 18:55:39 .net
そうだな
ごめんアホなこと言った

102 :デフォルトの名無しさん:2008/10/17(金) 19:44:48 .net
>>98
論理式が返すのは、論理値だろ
論理式の処理過程を期待してプログラムするってのは、真値が特定の値である事を期待してプログラムするのと同じじゃん


103 :デフォルトの名無しさん:2008/10/17(金) 19:50:03 .net
>>102
そうだよ、一部ではもはやただの論理式ではなく制御構造と見なされているということ。
C++ではあまり見ないけど、PerlとかでHogeHoge or dieとか。

104 :デフォルトの名無しさん:2008/10/17(金) 19:50:39 .net
>>102
>論理式の処理過程を期待してプログラムする

「期待」じゃなくてC/C++は「仕様で」「明確に」「わざわざ」評価順を
定義しているわけだが
&& || に関してはな
何の意味も無くそんな仕様にしてると思ってんの?

ま、&&や||は論理演算、bool代数だよな?そこはその通りだ。
フローコントロールもセマンティクスも変えちまう
オーバーロードなんてもってのほかだよな?

105 :デフォルトの名無しさん:2008/10/17(金) 19:59:18 .net
bool banana;

if(!banana)
{
// ↑気持ち悪いねこれ。
}

106 :デフォルトの名無しさん:2008/10/17(金) 20:01:54 .net
if(true != banana)
if(false == banana)

好きなほうを選べ

107 :デフォルトの名無しさん:2008/10/17(金) 20:02:26 .net
VB.NETではVBには無かった短略評価の
AndAlso OrElse という(キモい)演算子が追加されているのだが
その意味も分からないんだろうねえ

108 :デフォルトの名無しさん:2008/10/17(金) 20:10:39 .net
>>104
言ってることがわからない
&&や||をオーバーロードできるように定義しているのも「仕様」なんじゃないの?


109 :デフォルトの名無しさん:2008/10/17(金) 20:12:51 .net
>>108
だから、その仕様が不整合で良くないっつー話をしてるんだろ
言うまでも無く後から突っ込んだオーバーロードの仕様がマズい

110 :デフォルトの名無しさん:2008/10/17(金) 20:19:03 .net
&&や||をオーバーロードの場合はコンパイラが短絡すればいいだけだろ

111 :デフォルトの名無しさん:2008/10/17(金) 20:27:57 .net
何だそれ
互換性が無くなってさらにカオスになるだけじゃねえか

112 :デフォルトの名無しさん:2008/10/17(金) 20:31:27 .net
&&と||の意味がわかんねー奴はC++厨気取りたいんなら
More Effective C++ぐらい嫁

113 :デフォルトの名無しさん:2008/10/17(金) 20:36:52 .net
.front()も.begin()も同じで良いジャン
なんで違うの

114 :デフォルトの名無しさん:2008/10/17(金) 20:48:12 .net
>>113
hoge.front()は*hoge.begin()相当。
強いて言えば、beginからfrontは取り出せるが逆は一般にできないんでfrontがやや余計かな。

115 :デフォルトの名無しさん:2008/10/17(金) 20:52:08 .net
front取り忘れたのかね

116 :デフォルトの名無しさん:2008/10/17(金) 21:20:33 .net
map持っていて

<<でkeyを流し込んだら valueが返ってくるクラスはあり?

117 :デフォルトの名無しさん:2008/10/17(金) 21:29:44 .net
演算子でやる理由がわからん

118 :デフォルトの名無しさん:2008/10/17(金) 21:46:28 .net
>>116
[]演算子で標準装備してない?
まあこれはkeyを持ってなかったらvalueにはデフォルトコンストラクタで生成
した値が代入されてしまうんだけど

119 :デフォルトの名無しさん:2008/10/17(金) 21:51:59 .net
[]だとポインタのとき面倒じゃね?


120 :デフォルトの名無しさん:2008/10/17(金) 21:54:05 .net
value = (*hogemap)[key]
でおけ

121 :デフォルトの名無しさん:2008/10/17(金) 21:58:28 .net
あえて operator()

122 :デフォルトの名無しさん:2008/10/17(金) 22:39:11 .net
ttp://homepage2.nifty.com/well/Operator.html#arrow_ast



なんでもあり

123 :デフォルトの名無しさん:2008/10/17(金) 23:04:00 .net
>>119
いやポインタに対して使うときは全部だろ

124 :デフォルトの名無しさん:2008/10/18(土) 00:55:05 .net
C++のIDEに自動的にヘッダやnamespaceを宣言してくれる奴って何かあります?
Javaとかだと適当にクラス使ってもクラスパスから候補探してくれるのがメジャーなIDEの基本機能にある。

125 :デフォルトの名無しさん:2008/10/18(土) 05:16:34 .net
>>124
ゆとりは黙ってろよ(笑)
そんな余計な機能はIDEには要らない

126 :デフォルトの名無しさん:2008/10/18(土) 05:38:24 .net
自動的にヘッダを追加するようなIDEは怖くて使えません

127 :デフォルトの名無しさん:2008/10/18(土) 13:39:49 .net
さすが生産性の無さでユーザーがみるみる減っている言語だけはあるw

128 :デフォルトの名無しさん:2008/10/18(土) 13:56:13 .net
>>124
C++のヘッダのincludeは単なるプリプロセッサ命令で、やってることは
原始的なコピペ
Javaは自己記述的なjarやclassからシンボルをインポートしてるわけだ

C++でそういうことをやるのは技術的に不可能ではないだろうが
向いているとは思えんな
現代的なIDEなどが出るよりはるか以前に作られた化石言語なのだから仕方が無い

129 :デフォルトの名無しさん:2008/10/18(土) 14:06:23 .net
C++はIDEととことん相性悪いからな
まるでIDEを妨害しようとしているかのような仕様

VSやBuilderやCDTはマジ頑張ってると思うのですよ
頭が下がる

130 :デフォルトの名無しさん:2008/10/18(土) 21:29:58 .net
C++を有難がって使ってる奴なんているの?
居たとしたらちょっと馬鹿すぎる

131 :デフォルトの名無しさん:2008/10/18(土) 21:38:06 .net
文句なしの代替が無いから使っているだけだよ。

132 :デフォルトの名無しさん:2008/10/18(土) 22:40:11 .net
有難がって使うプログラミング言語なんてないだろ。

133 :デフォルトの名無しさん:2008/10/18(土) 22:51:52 .net
>>130
C#がネイティブ初めから吐いてくれたらそっちに移行したいんだが
仕方ないからC++を使ってる

つーかC#プログラマ恵まれ過ぎだろ・・・

134 :デフォルトの名無しさん:2008/10/18(土) 22:53:30 .net
C++が一番簡単だから使ってる


135 :デフォルトの名無しさん:2008/10/18(土) 22:59:07 .net
結局、

136 :デフォルトの名無しさん:2008/10/18(土) 23:00:16 .net
結局、このスレにC++信者なんて居なかったってオチか

137 :デフォルトの名無しさん:2008/10/19(日) 01:23:10 .net
>>105
↑頭悪いねこれ。

138 :デフォルトの名無しさん:2008/10/19(日) 14:06:06 .net
C++が最高だと思って使ってる奴はいないだろ。
ただ分かってない上司やクライアントがいるからC++の仕事もあるってだけだ。
本当はCで十分だったり、C#やJavaの方が効率良かったりするんだが。

139 :デフォルトの名無しさん:2008/10/19(日) 14:12:04 .net
C#やJavaをフロントエンドにして、
OS依存部分や、処理が思い部分を
C言語で書くスタイルがベストだな。

既にOracleがそうだし、CADもそういうのがある。

140 :デフォルトの名無しさん:2008/10/19(日) 14:23:15 .net
C++はプログラム初級〜中級者向けのおもちゃとしてはそこそこ面白い
だが普通はすぐに暗黒面に気付いて使うのを辞めるor仕事で仕方なく使うだけだ

141 :デフォルトの名無しさん:2008/10/19(日) 14:41:12 .net
その通り過ぎて何も言えねえ…
良い代替言語があれば良いんだけどね

142 :デフォルトの名無しさん:2008/10/19(日) 14:53:48 .net
D言語がふらふらしてなければなw
創始者が「仕様変えるぞー」を未だに自粛しないからこまったものだ。

143 :デフォルトの名無しさん:2008/10/19(日) 16:11:15 .net
まあ暗黒面に気付かないうちはまだまだ初心者ってことだ
それに気付いた時にはバッドノウハウばかりで他言語に応用が効かないのも悔しいところだ

144 :デフォルトの名無しさん:2008/10/19(日) 16:19:28 .net
Plan9(笑)
D言語(笑)

145 :デフォルトの名無しさん:2008/10/19(日) 16:37:25 .net
バッドノウハウを追求するのは楽しい
しかしチームでやる仕事ではゴメンだね

146 :デフォルトの名無しさん:2008/10/22(水) 11:30:38 .net
クライアントから例外もテンプレートも(わからないから)使わないで欲しいって言われた
周辺環境もある意味では言語の問題点に含まれると思う
特にC++の場合、ひとによってスキルの差がありすぎ
せっかくのリソースが活かせないことが多い

まあ割の良い仕事だから我慢するけど、これならCの方が開発効率良いよorz

147 :デフォルトの名無しさん:2008/10/22(水) 17:05:15 .net
Cの方が開発効率良い、に関しては、
だったらクラスも何も使わないでC同然に書けばいいじゃないと思う。

148 :デフォルトの名無しさん:2008/10/22(水) 17:14:26 .net
>>146
クラスがあるだけで private とクラスの名前空間があるから
かなり精神的に楽になる。依然マクロの脅威はあるけど。

149 :デフォルトの名無しさん:2008/10/22(水) 18:05:19 .net
>>147
それならCでいい、というかCのがいいだろ
malloc()の戻り値などをいちいちキャストする必要は無いし
Cリンケージのためにいちいちextern "C"などと書く必要も無い

150 :デフォルトの名無しさん:2008/10/22(水) 19:03:52 .net
>>149
147でないけど

キャストは new の仕様を促すからそのほうがいいんじゃない。new の方が楽で型安全だし。

extern "C" はCとリンクする部分だけでいいよ。普通の C のライブラリだって extern "C" 使ってるし。
extern "C" を使わないほうが型安全だし。

151 :デフォルトの名無しさん:2008/10/22(水) 19:18:08 .net
>>150
newは例外まみれで鬱陶しい別の問題を引き起こすだろ
ただの関数形式のアロケータなら差し替えるのも簡単だ
C++をC++らしく使わないという仮定の話をしているようだから
それぐらいならCの方がいいと言ってるんだよ

クラスすら使わないC++で提供される付加価値よりは
グダグダなABIだの、さりげなく仕込まれる例外対策だののほうがずっと鬱陶しい

152 :デフォルトの名無しさん:2008/10/22(水) 21:07:44 .net
> ただの関数形式のアロケータなら差し替えるのも簡単だ
それと同じくらいnewの差し替えも簡単だ。
void* operator new(std::size_t n)
{
return my_alloc(n); //NULLを返せば例外はthrowされない
}
void operator delete(void* p)
{
my_free(p);
}
//以下コピペするだけ
void* operator new[](std::size_t n)
{
return operator new(n);
}
void operator delete(void* p)
{
operator delete(p);
}
いや、これもずっと鬱陶しい「さりげなく仕込まれる例外対策」の内というならそれまでだけど。

153 :デフォルトの名無しさん:2008/10/23(木) 00:24:04 .net
bad_allocが嫌ならnothrowつきのnewを使えばいいじゃない

ただ、例外を使わないようにするとどうせNULLチェックをサボる奴が出てくるので
むしろ有害だと思うけどな

154 :デフォルトの名無しさん:2008/10/23(木) 02:02:52 .net
NULLチェックをサボるために例外を使うってことは、newする部分をまとめてtryに入れるんだろうけど、
スマートポインタかGCでもない限り、メモリリークの危険性がある。
STLで用意されてるauto_ptrはSTLコンテナに食わせられない糞仕様。


155 :デフォルトの名無しさん:2008/10/23(木) 08:09:11 .net
CAutoPtr

156 :デフォルトの名無しさん:2008/10/23(木) 11:08:44 .net
>>154
まだ過去の話してんのか
std::tr1::smart_ptrは今では当然のように使う

157 :デフォルトの名無しさん:2008/10/23(木) 11:46:55 .net
std::tr1::shared_ptrかboost::smart_ptrのどっちかと間違えてるんだと思うが
どっちにしろどうしても必要な所で最低限の使用にしないと重すぎて酷いことになるからなぁ
auto_ptrはそこそこ軽いから割と気軽に使える

まあ、本当は生ポインタが一番いいんだけどな
プログラマが楽をするためだけにスマポの莫大なオーバーヘッドを持ち込むのは感心できない

158 :デフォルトの名無しさん:2008/10/23(木) 12:17:44 .net
プログラマに苦労を強いると、バグの発生率が跳ね上がるでしょ。
多くの状況ではオーバーヘッドよりバグの方が深刻な問題になるんだから、楽はすべきだと思うけど。

159 :デフォルトの名無しさん:2008/10/23(木) 13:12:15 .net
C + Boehm GCでいいやん
スマポなんかより便利だし

160 :デフォルトの名無しさん:2008/10/23(木) 13:21:50 .net
>>157
boost::smart_ptr なんて存在しない。
どっちも shared_ptr。

あとオーバーヘッドなんて大したことないぞ。
ポインタに参照カウントの分の整数がついて回るだけ。
ポインタアクセス時は通常のポインタとほぼ同等
(レジスタ割り付けが多少阻害されるかもしれんが)。
コピーやデストラクト時に参照カウントの増減でこれも一瞬。


161 :デフォルトの名無しさん:2008/10/23(木) 19:05:25 .net
boost::intrusive_ptr 方式のスマートポインタが好き。

162 :デフォルトの名無しさん:2008/10/23(木) 20:50:24 .net
UN*X では Objective-C が使えるから無理して C++ を使う必要は無いよね

163 :デフォルトの名無しさん:2008/10/23(木) 21:02:12 .net
>>162
極一部のUnix以外ではCが主流というオチ。

164 :デフォルトの名無しさん:2008/10/23(木) 21:22:07 .net
unixだとc++なんか有象無象とひとつ

165 :デフォルトの名無しさん:2008/10/23(木) 21:28:01 .net
>>154
ようやく次のC++0xで、コンテナに入れられるunique_ptrが入る。
参照カウントせずauto_ptrと全く同じオーバーヘッド。
まったくもって導入が遅すぎる。

166 :デフォルトの名無しさん:2008/10/27(月) 19:09:41 .net
C++

C++0x

C++(笑)

167 :デフォルトの名無しさん:2008/10/29(水) 13:28:21 .net
newの例外の問題がなんなのか良くわからんが
template<class T>class vAlloc{
public:
 T *m_obj;
 vAlloc() : m_obj(NULL){};
 vAlloc(int size) : m_obj(NULL){
  Alloc(size);
 };
 ~vAlloc(){
  delete []m_obj;
 };
 Alloc(int size){
  delete []m_obj;
  try {
   m_obj = new T[size];
  } catch(std::bad_alloc) {
   cerr << "メモリを増設してください" << endl;
   m_obj = NULL;
   exit(0);
  }
 };
};
こういうクラスを作っといて
vAlloc<char> str1(100);
strcpy(str.m_obj, "Hello");
こうやって利用すればいいんでないの?


168 :デフォルトの名無しさん:2008/10/29(水) 13:34:53 .net
>>167
言いたい事は分かるけど、コピーコンストラクター位はつけた方がいいと思うんだ

169 :デフォルトの名無しさん:2008/10/29(水) 13:46:13 .net
「解決できるけどデフォルトで放置されている問題」が多いんだな

170 :デフォルトの名無しさん:2008/10/29(水) 13:55:15 .net
>>167
なんだそれ

vAlloc<char> str1(100);
なんてやるなら
char str1[100];
でいいだろ

そのクラスはそれ以上のものをそれは何も提供していないし
何の解決にもなっていない

171 :デフォルトの名無しさん:2008/10/29(水) 14:02:26 .net
STLとかはAllocator差し替えられるけど
alloc()が例外投げること前提に作られてて
NULLチェックなんてしてるわけねーし

C++でデフォのnew捨てるってのは
事実上、標準を含む大半のライブラリを捨てるってこと

172 :デフォルトの名無しさん:2008/10/29(水) 14:03:41 .net
>>170
何言ってるんだ?
君のコンパイラは、

char str1[strlen(hoge) + 1];

こんな使い方が出来るのか?


173 :デフォルトの名無しさん:2008/10/29(水) 14:05:16 .net
>>172
ああ、いいたいことは分かった
alloca()っぽいことが出来るんだね

alloca()の代用にしかなってないけど

174 :デフォルトの名無しさん:2008/10/29(水) 14:09:13 .net
コンストラクタやデストラクタが動くんだからalloca()の代用は言いすぎか

まあ、そういうことが言いたいんじゃなくて、newが使われるシナリオの
ごくごく一部しかカバーできていないだろ、といいたいんだよ

175 :デフォルトの名無しさん:2008/10/29(水) 14:41:56 .net
>>174
newが使われる際の問題って他にあるの?


176 :デフォルトの名無しさん:2008/10/29(水) 16:21:08 .net
>>167
そんなことするならset_new_handlerとvector(もしくはboost::scoped_array)で十分だと思う。

177 :デフォルトの名無しさん:2008/10/29(水) 16:50:22 .net
>>176
newが例外をスローしないようにするのなら
vectorなんて使えないんじゃないのか

new_handlerの中でabort()でも呼ぶのならいいだろうけど、もっと悪いような

178 :デフォルトの名無しさん:2008/10/29(水) 17:37:38 .net
>>177
> new_handlerの中でabort()でも呼ぶのなら
そういう仮定。だって>>167ではexitだったからこそ。

179 :デフォルトの名無しさん:2008/10/29(水) 18:06:25 .net
そういうことか。よく見てなかった。
つうかabort()だのexit()だの呼んでる時点でダメだろ

180 :デフォルトの名無しさん:2008/10/29(水) 19:09:35 .net
俺の探し方が悪いのか、abort()だのexit()だの呼んでる以外のサンプルコードを見た事がない


181 :デフォルトの名無しさん:2008/10/29(水) 19:13:25 .net
ま、new handlerでできることはそれぐらいだろ
つまり、new handlerは、「それでいい」プログラムにしか使えないってことだよ

182 :デフォルトの名無しさん:2008/10/29(水) 19:39:56 .net
予めでっかいメモリを確保→newハンドラで解放すれば、
ヒープに空きができてnewを成功させられるぜっていう話を聞いたことがある。
実用性皆無にしか思えない。

183 :デフォルトの名無しさん:2008/10/30(木) 01:39:17 .net
new handler で必ずしも必要でないキャッシュをパージすることが考えられる。
Java の SoftReference がそんな感じ。

184 :デフォルトの名無しさん:2008/10/30(木) 09:41:16 .net
bad_allocが発生する様な環境下で、必要のないキャッシュを持つ設計が正しいのだろうか?


185 :デフォルトの名無しさん:2008/10/30(木) 10:01:22 .net
あっちと内容がかぶってる
C++が糞言語なのはみんな知ってるから一箇所でやってくれないかな

186 :デフォルトの名無しさん:2008/10/30(木) 13:05:43 .net
どこ?

187 :デフォルトの名無しさん:2008/11/02(日) 04:11:41 .net
>>172
C++ってそんな事も出来ないのかw

188 :デフォルトの名無しさん:2008/11/02(日) 07:33:07 .net
配列ごときをいちいち動的にヒープに取るような非効率言語とは違うんですっ!

189 :デフォルトの名無しさん:2008/11/02(日) 08:49:23 .net
>>187
Cにも出来ないけどな


190 :デフォルトの名無しさん:2008/11/02(日) 11:53:20 .net
>>189
Cは低級言語だから別にいいんだよw

191 :デフォルトの名無しさん:2008/11/02(日) 12:23:05 .net
>>190
'C++'の'C'部分に独自の拡張を加えちゃ駄目じゃん


192 :デフォルトの名無しさん:2008/11/02(日) 12:37:38 .net
C言語は高級言語だろ・・・
抽象化水準が低いから中級言語って言う奴はいたけど。

193 :デフォルトの名無しさん:2008/11/02(日) 12:54:55 .net
>>189
C99なら嘆かわしいことに出来てしまう

まあ、あんなものC言語じゃないけどな

194 :デフォルトの名無しさん:2008/11/03(月) 19:11:25 .net
演算子のオーバーロードはヤバイと
ム半年目の頃に既に俺は思ってたね
関数の引数が参照渡しなのもヤバイ

195 :デフォルトの名無しさん:2008/11/03(月) 21:30:24 .net
演算子多重定義関数での引数と言えば、const参照が相場だろ。
2行目が値渡しでないからやばいと言っているのであればそれは違う。

196 :デフォルトの名無しさん:2008/11/03(月) 22:35:07 .net
const参照渡しが安全だと思ってるアホ発見

197 :デフォルトの名無しさん:2008/11/04(火) 00:23:34 .net
Cに++した程度の言語だ
やばくて当たり前だっての

オブジェクト指向アセンブラに何処まで求めてるんだ?


198 :デフォルトの名無しさん:2008/11/04(火) 00:39:19 .net
本当に C に ++ してくれたのなら、どんなに良かった事か…
本当の意味で C with Class だったら更に良かったんだがな

残念言語

199 :デフォルトの名無しさん:2008/11/04(火) 02:52:09 .net
>>192
お前その発言がどんだけ化石か自覚してるのか?

200 :デフォルトの名無しさん:2008/11/04(火) 09:33:16 .net
C++の++は良く分からん物でオーバーロードされてるだろ

201 :デフォルトの名無しさん:2008/11/05(水) 18:03:54 .net
もしかしたら実際の処理は--かもしれない

202 :デフォルトの名無しさん:2008/11/05(水) 18:33:56 .net
そしてC++の仕様上、それを知る事は不可能に近い

203 :デフォルトの名無しさん:2008/11/06(木) 16:48:48 .net
>194-196のやりとりがよくわかりません。
演算子定義をconst参照で受けて、さらに注意しなければいけないことって何?

204 :デフォルトの名無しさん:2008/11/06(木) 18:08:29 .net
多分、>>196 にしか解らない深い理由があるんだろう。

205 :デフォルトの名無しさん:2008/11/06(木) 19:33:21 .net
const_cast

206 :デフォルトの名無しさん:2008/11/06(木) 20:24:16 .net
それくらいでびくついているようではC++なんて使えないけどな。
全くもってそこらじゅう罠だらけだもん。

207 :デフォルトの名無しさん:2008/11/06(木) 21:22:36 .net
・constなんてconst_castや普通のキャストで誰でも簡単に外せる
・constを外さなくたってmutableメンバがあれば変更し放題
・deleteに対してconstは全く無力

何かを安全にするつもりでconstを使ってるなら、それは時間の無駄です
constは何も守ってくれません

208 :デフォルトの名無しさん:2008/11/06(木) 21:45:34 .net
const_cast は使うこと自体が有害だと思われ

209 :デフォルトの名無しさん:2008/11/06(木) 21:46:39 .net
気休めにしかならないと分かっていても、すがりたくなる。
ほかに信じられるものなんて何もないから。

210 :デフォルトの名無しさん:2008/11/06(木) 21:51:57 .net
setの要素を変更する時にconst_castは不可欠です

211 :デフォルトの名無しさん:2008/11/06(木) 21:58:17 .net
あれってconst付いていたっけ?

212 :デフォルトの名無しさん:2008/11/06(木) 22:04:48 .net
setの要素を直接変更したらまともに動作しないぞ
removeしてからinsertしないと

213 :デフォルトの名無しさん:2008/11/07(金) 02:46:00 .net
EffectiveSTLの22番だな

214 :デフォルトの名無しさん:2008/11/07(金) 03:43:36 .net
比較関数が見ないメンバであれば問題ない。

215 :デフォルトの名無しさん:2008/11/07(金) 09:35:55 .net
const_castなんてC++の問題ではなく、C++を利用するプログラマの問題だろ

216 :204:2008/11/07(金) 12:14:46 .net
>>207
やっぱりそういう話か。下らん。

217 :デフォルトの名無しさん:2008/11/07(金) 16:23:46 .net
で、外注先のプログラマに問題が無い事は誰が保障してくれるんだ?
言語側で保障してりゃ良いだけの事を、本当に非効率的な言語(笑)だわ。

218 :デフォルトの名無しさん:2008/11/07(金) 17:01:39 .net
問題のあるプログラマを雇っている外注なんぞ切ってしまえ


219 :デフォルトの名無しさん:2008/11/07(金) 17:05:50 .net
また始まった
ぼくはそんなつかいかたしないからC++はわるくないんだい!!

なんか本気で言ってそうでかわいそうになる

220 :デフォルトの名無しさん:2008/11/07(金) 17:29:08 .net
何のためにconst_castがあるのかも考えず、不用意に使うような奴を擁護する事の方が信じられん
きっと、大阪の轢き逃げみたいな事件を起こすような奴に違いない

221 :デフォルトの名無しさん:2008/11/07(金) 17:53:25 .net
はいはい、今度は論点のすり替えですね
フルコースですか
次のメニューをお願いします

222 :デフォルトの名無しさん:2008/11/07(金) 17:54:41 .net
レッテル張りも消化済みでしたね
引き続きどうぞ

223 :デフォルトの名無しさん:2008/11/07(金) 18:12:17 .net
そもそも、言語側で保障する方が非効率だから、保障しなかったのにね

224 :デフォルトの名無しさん:2008/11/07(金) 20:36:53 .net
const_castはどう考えても内容を変更しないのになぜか非定数を要求するAPIのためのもの。

Motifやってた頃はお世話になりました。

225 :デフォルトの名無しさん:2008/11/07(金) 20:59:11 .net
const版・非const版で多重定義するときにも使える。
const char* strchr(const char* s, int c);
inline char* strchr(char* s, int c)
{
const char* t = s;
return const_cast<char*>(strchr(t, c));
}
Cのstrchrより型安全性が増しているという不思議。もっともCとの互換性は無くなったが。

226 :デフォルトの名無しさん:2008/11/07(金) 23:36:09 .net
アホな事する奴がconst_castなんて律儀に書くわけないという

227 :デフォルトの名無しさん:2008/11/07(金) 23:42:36 .net
そういうアホは自分に影響が無い程度に放っておけばいいんです。

228 :デフォルトの名無しさん:2008/11/08(土) 18:01:46 .net
どうしてSTLってstd::の中に全部ぶち込んでるの?
整理とか出来ない人が作ったの?

229 :デフォルトの名無しさん:2008/11/08(土) 18:40:10 .net
とりあえず、グローバルに全部散らばっているよりは遥かにましです。

230 :デフォルトの名無しさん:2008/11/08(土) 19:11:13 .net
STLは十分整理されているからそれで困ったことはないよ。
名前空間はいろんな人たちが集まって何かを作るときの応急処置ぐらいに思っておいた方がいいよ。
boostは移行中or統合中とかがあって、一応名前空間で区別してるけど
using使い出すともうカオスになるよね。

231 :デフォルトの名無しさん:2008/11/08(土) 22:32:08 .net
>>228
あなたならどう整理する?

232 :デフォルトの名無しさん:2008/11/08(土) 23:17:56 .net
.NETみたいに

233 :デフォルトの名無しさん:2008/11/09(日) 02:10:38 .net
名前空間も罠の塊だからあんまり多いと困る

234 :デフォルトの名無しさん:2008/11/09(日) 16:31:19 .net
>>233
using namespaceとか使うから罠に嵌るんじゃないのか?

235 :デフォルトの名無しさん:2008/11/09(日) 17:00:09 .net
そんなもん使わなくったって落とし穴はいくらでもあるよ
C++にはKoenig Lookupという素敵な仕組みがあるから

236 :デフォルトの名無しさん:2008/11/10(月) 08:50:37 .net
signed と unsigned の比較くらいできるようにしてくれっつーの!
ヽ(`Д´)ノ

237 :デフォルトの名無しさん:2008/11/10(月) 12:49:34 .net
signed廃止しようぜ
負の数なんてなくても平気

238 :デフォルトの名無しさん:2008/11/10(月) 14:23:58 .net
>>226
そういう奴はふつー、Cスタイルのキャスト (万能) 使うよなあ。

239 :デフォルトの名無しさん:2008/11/10(月) 23:39:57 .net
>>237
そしてsigned_intクラスを作るんでしょ。

240 :デフォルトの名無しさん:2008/11/11(火) 03:31:15 .net
暗黙の変換がなくなるだけでも上等。

241 :デフォルトの名無しさん:2008/11/11(火) 10:36:41 .net
分の悪い取引だな

242 :デフォルトの名無しさん:2008/11/24(月) 12:51:07 .net
enumの仕様をC#と同じに変えてほしいな

243 :デフォルトの名無しさん:2008/11/24(月) 17:07:17 .net
>>242 次の改訂で入る enum class でいいか?
http://en.wikipedia.org/wiki/C%2B%2B0x#Strongly_typed_enumerations

244 :デフォルトの名無しさん:2008/11/24(月) 20:46:57 .net
いやもう改訂とかどうでもいいです
9割の案件でC#使ってるんで

245 :デフォルトの名無しさん:2008/11/25(火) 03:33:56 .net
もう来るなよ。

246 :デフォルトの名無しさん:2008/11/25(火) 06:30:45 .net
問題はその1割のC++案件がストレスの9割を占めている点なんだが
ほんと、さっさと消えろよゴミ言語が

247 :デフォルトの名無しさん:2008/11/26(水) 08:50:02 .net
>>243
それがあればよさそうだ
改訂版が待ち遠しいぜ

248 :デフォルトの名無しさん:2008/11/26(水) 13:42:58 .net
規格発行が 2010 だから、すでに先行して実装が進んでることから考えて
まともな処理系が使えるようになるのが 2012 ぐらいかな?そこから一般の仕事で
使えるぐらいに日本で普及するのが 2015 ぐらいじゃね?

249 :デフォルトの名無しさん:2008/11/26(水) 17:38:36 .net
6年後か
さすがにC++終わってそうだなw
今C++で張り切ってる中年組は全部リストラ済みだろうし

250 :デフォルトの名無しさん:2008/11/26(水) 18:15:03 .net
JavaとC#に支配された世界もゾッとしないけどなー

その頃Dは7.0くらいになってるんだろうか

251 :デフォルトの名無しさん:2008/11/26(水) 18:25:14 .net
ネイティブコードを吐き出せるいかした言語がでるまで、C/C++は終わらねぇだろ
どうやって、JavaやC#を実装するつもりだよ

252 :デフォルトの名無しさん:2008/11/26(水) 18:37:49 .net
いや、Cは残るだろ
アホか

253 :デフォルトの名無しさん:2008/11/26(水) 18:40:28 .net
念のため>>252>>251宛てな
聳え立つ糞の塊のC++とCを一緒にすんなカス

254 :デフォルトの名無しさん:2008/11/26(水) 18:53:23 .net
「C/C++」
こんな書き方発明した糞野郎は誰なんだろうな全く

255 :デフォルトの名無しさん:2008/11/26(水) 20:03:57 .net
Cが残って、C++が残らないって、意味が分からんw

256 :デフォルトの名無しさん:2008/11/26(水) 21:06:52 .net
            ∩_ 
           〈〈〈 ヽ
          〈⊃  }
   ∩___∩  |   |
   | ノ      ヽ !   !
  /  ●   ● |  /
  |    ( _●_)  ミ/ こいつ最高にアホ
 彡、   |∪|  /
/ __  ヽノ /
(___)   /

257 :デフォルトの名無しさん:2008/11/27(木) 01:11:31 .net
managed C++より、unmanaged C#を作ってほしい。

258 :デフォルトの名無しさん:2008/11/28(金) 01:18:19 .net
最近の動向を見てるとC++が残らなくても驚かない。
CはUNIXカーネルの大半がCで書かれている限り残る。

259 :デフォルトの名無しさん:2008/11/28(金) 19:48:02 .net
Objective-C は Mac が方針を変えない限りは残る。

260 :デフォルトの名無しさん:2008/11/29(土) 23:15:08 .net
>>259
s/Mac/Apple/gな。今やiPhoneにも使用されている言語だ。

261 :デフォルトの名無しさん:2008/11/30(日) 02:40:49 .net
態々置換文書くって何なの?日本語不自由なの?

262 :デフォルトの名無しさん:2008/11/30(日) 03:12:42 .net
>>261
流行ってるから言ってみたのか?

263 :デフォルトの名無しさん:2008/11/30(日) 03:26:09 .net
>>262
は?

264 :デフォルトの名無しさん:2008/11/30(日) 03:32:58 .net
>>261
>>262 が答えらしいよ。

265 :デフォルトの名無しさん:2008/11/30(日) 03:37:44 .net
アンカミスですか

266 :デフォルトの名無しさん:2008/12/01(月) 00:30:12 .net
〜って何なの?死ぬの?

267 :デフォルトの名無しさん:2008/12/06(土) 03:41:30 .net
ケンカはやめて(><)

268 :デフォルトの名無しさん:2008/12/06(土) 15:05:29 .net
二人をとめて〜

269 :デフォルトの名無しさん:2008/12/09(火) 12:54:55 .net
河合奈保子出てくるとか、どんだけ歳y(ry

270 :デフォルトの名無しさん:2008/12/10(水) 17:27:31 .net
仕事ではわけわからなくなるのでboostは使っていない。標準が一番だ。

271 :デフォルトの名無しさん:2008/12/10(水) 17:52:31 .net
つまりC++には実用性のあるライブラリが一つも無い
一体何十年使われ続けてこのザマだよ

272 :デフォルトの名無しさん:2008/12/10(水) 17:55:23 .net
C++の問題点

  R u b y で は な い こ と

わかったかクズどもw

273 :デフォルトの名無しさん:2008/12/10(水) 17:57:19 .net
はいはいスルースルー

274 :デフォルトの名無しさん:2008/12/11(木) 09:28:03 .net
>>271
お前のいるセカイには、そもそも何ひとつないんだろ?

275 :デフォルトの名無しさん:2008/12/14(日) 09:19:57 .net
河合って誰だよ
竹内まりやだろ

276 :デフォルトの名無しさん:2008/12/18(木) 02:34:28 .net
C++頑張りすぎだろ、

277 :デフォルトの名無しさん:2008/12/18(木) 03:44:56 .net
最近、明らかに経験不足な連中が使いたがっている/使わされてるケースを見かけるんだが
何かあんのかね?
まずはJavaだの.NETだので基本やってくれって思う

278 :デフォルトの名無しさん:2008/12/18(木) 20:36:22 .net
いまメモリどんくらい使ってんのかガチでわかり難い
なんか仕掛けいれておかないとこのへんの管理ができない
他の言語もそうだけど

279 :デフォルトの名無しさん:2008/12/18(木) 20:49:12 .net
それがわかりやすい言語ってあるの?
いや、GCがいる言語はGCに聞けば教えてくれるのかもしれないけど
そういうのはそもそもメモリ使用量の制御自体出来ないじゃない

280 :デフォルトの名無しさん:2008/12/18(木) 21:40:47 .net
別に OS の機能でメモリ使用量を吐き出せるっしょ。
コンシューマゲーム作ってるというのであれば話は別になるかもしれないが。

281 :デフォルトの名無しさん:2008/12/19(金) 08:40:11 .net
たとえばfree(3)してもOSに返すわけじゃない
どのサイズを知りたいかによるけど、言語レベルでは難しいだろうね

282 :デフォルトの名無しさん:2008/12/19(金) 08:46:24 .net
本気でメモリ管理したいなら多くのOSで直接システムコールができるC/C++はむしろ有利なほう

283 :デフォルトの名無しさん:2008/12/19(金) 17:11:31 .net
>>282
メモリ管理如きにそんな潤沢な予算を回せる案件は無い
寝言は寝て言え

284 :デフォルトの名無しさん:2008/12/19(金) 19:44:05 .net
メモリが足りないようなら管理きちっとするだろ・・・常識的に

285 :デフォルトの名無しさん:2008/12/19(金) 19:50:02 .net
>>284
ハード買わせた方が圧倒的に安い

286 :デフォルトの名無しさん:2008/12/19(金) 19:55:20 .net
メモリを数ギガ使うようなアプリだと結局ねえ。

287 :デフォルトの名無しさん:2008/12/19(金) 22:08:22 .net
組み込み機器だと数MBのメモリを必死でやりくりするようなケースはよくある
PCのアプリがプログラムの全てだと思うな

288 :デフォルトの名無しさん:2008/12/19(金) 23:21:28 .net
はいはい、二言目には組み込みね

289 :デフォルトの名無しさん:2008/12/19(金) 23:32:42 .net
ん?
組み込みのほうが格が上というのは常識だが?

290 :デフォルトの名無しさん:2008/12/19(金) 23:51:11 .net
組み込みなんて誰でも出来るだろ
あんなのプログラムじゃねえよ

291 :デフォルトの名無しさん:2008/12/20(土) 00:40:35 .net
組み込みって土方の中の土方ってイメージがある

292 :デフォルトの名無しさん:2008/12/20(土) 00:44:45 .net
アプリケーションとハードを繋ぐためだけのコードをひたすら書く仕事だからな
気が狂うわ

293 :デフォルトの名無しさん:2008/12/20(土) 02:11:09 .net
安い人間使った方が良いだけで
全然人間的思考が必要な物じゃないからな、組み込み

294 :デフォルトの名無しさん:2008/12/20(土) 07:45:03 .net
改めて流れ見たけど>>287は本当にばかだなぁ

295 :デフォルトの名無しさん:2008/12/20(土) 12:15:51 .net
組み込み屋ごときの低レベルな頭で偉そうなことを言おうとすると
こうなるというよい見本だったな

296 :デフォルトの名無しさん:2008/12/20(土) 12:46:33 .net
だいたい、組み込みはリソース独占できるんだから、他の縁もゆかりもないアプリとメモリを調整する必要ないし。

297 :デフォルトの名無しさん:2008/12/20(土) 12:57:24 .net
右から左にデータ流すだけでメモリなんかそんなに消費するわけないだろ
どんだけ下手くそなコード書いてるんだろ

298 :デフォルトの名無しさん:2008/12/20(土) 14:00:48 .net
組み込みでlispとかhaskell使いたい

299 :デフォルトの名無しさん:2008/12/22(月) 09:28:29 .net
組み込み叩きの自演が酷いなコレ。

300 :デフォルトの名無しさん:2008/12/22(月) 09:46:31 .net
命にかかわるような致命的な間違いを起こしてきたのは何時だって組込の奴らだし

301 :デフォルトの名無しさん:2008/12/25(木) 06:56:09 .net
そうでもない。

302 :デフォルトの名無しさん:2009/07/26(日) 07:27:21 .net
class A
{
virtual void func(void) {}
};

class B : public A
{
virtual void func(void) {}
};

class C : public B
{
virtual void func(void) { A::func(); }
};

こんな記述ができてしまうC++はクソ。
is a関係破壊してるしwww
Java見習え

303 :デフォルトの名無しさん:2009/07/26(日) 08:45:06 .net
>>302
関係破壊してるのはお前だろjk
C++は自由度が高いがそれを利用するもしないも全部
プログラマの責任

つまりお前はヘボグラマ

304 :デフォルトの名無しさん:2009/08/01(土) 23:10:08 .net
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

class Test
{
public:
static void* operator new(size_t size,void* ptr){
delete (char*)ptr;
return NULL;
}
static void operator delete(void* ptr){
char** p = (char**)ptr;
*p = new char[256];
}
};


int main(void)
{
char* ptr;
delete (Test*)&ptr;
memcpy(ptr,"fuckin' C++",sizeof("fuckin' C++"));
printf("%s\n",ptr);
new(ptr) Test;

return 0;
}

305 :デフォルトの名無しさん:2009/08/02(日) 02:19:02 .net
>>304
delete[] (char*)ptr;でしょ。

306 :デフォルトの名無しさん:2009/08/02(日) 02:32:11 .net
[]抜けてたwww
まあ、この場合は余り影響ないだろうけど

307 :デフォルトの名無しさん:2009/08/02(日) 04:55:29 .net
C++なんて糞言語にいつまでもへばり付いてないで、いい加減C#へ旅立とうぜ?

308 :デフォルトの名無しさん:2009/08/11(火) 19:06:22 .net
研究者はC++を好んで使う
なぜなら自分で責任を取れるなら最も自由を与えてくれるのが
この言語において他は無いからだ

というか最早言語でさえない
メタ言語だ

309 :デフォルトの名無しさん:2009/08/15(土) 16:57:10 .net
メタって言いたいだけ。

310 :デフォルトの名無しさん:2009/08/20(木) 08:05:03 .net
滅多メタ

311 :デフォルトの名無しさん:2009/08/21(金) 11:38:30 .net
そのうちカーズは考えるのをやメタ

312 :デフォルトの名無しさん:2009/08/21(金) 11:56:58 .net
アセンブリソースを吐けるんだからメタ言語なのは当たり前の事だろ

313 :デフォルトの名無しさん:2009/08/21(金) 16:19:53 .net
>>312
>アセンブリソースを吐ける
のはコンパイラであって、言語ではありません。
>だからメタ言語
意味不明。

314 :デフォルトの名無しさん:2009/08/22(土) 02:37:44 .net
コードジェネレータは全てメタ言語だという主張だろう。
意味不明ということは無い。
言及する価値も無いが。

315 :デフォルトの名無しさん:2009/09/02(水) 11:19:27 .net
タメグチ言語だ

316 :デフォルトの名無しさん:2009/09/04(金) 18:21:45 .net
>>312
コンパイラはコードをアセンブラに変換する。
メタ言語はコードを生成する。

317 :デフォルトの名無しさん:2009/09/04(金) 19:46:11 .net
肥大化って一体何のこといってるの?
メモリが貧弱な組み込みデバイスでもC++のコードは思い通りに動いてくれてますけど。

318 :デフォルトの名無しさん:2009/09/05(土) 02:57:16 .net
わからないなら黙ってれば

319 :デフォルトの名無しさん:2009/09/05(土) 12:00:36 .net
>>317
>肥大化って一体何のこといってるの?
ヘタクソが作るとメモリ使用量が爆発的に増加する現象。
C++ や Java に対する無知が生む悲劇。

320 :デフォルトの名無しさん:2009/09/05(土) 20:34:15 .net
>>319
それってC++自体の「肥大化」とは全く関係なくない?
ヒープにあるオブジェクトをdeleteするとき、関連する全てのポインタを
自動的に全部無効にして欲しいとかは思ったことあるけど。

321 :デフォルトの名無しさん:2009/09/06(日) 12:04:24 .net
>>320
スマポを使えば無効にしてくれるよ。

322 :デフォルトの名無しさん:2009/09/06(日) 19:41:48 .net
スマポは無意味な肥大化だよな

323 :デフォルトの名無しさん:2009/09/06(日) 19:44:15 .net
いや、十分意味があるだろ。肥大化でも無いし。

324 :デフォルトの名無しさん:2009/09/07(月) 01:47:58 .net
スマポには嫌らしい落とし穴が

325 :デフォルトの名無しさん:2009/09/07(月) 01:58:13 .net
使わないともっとでかい穴が開きっぱなしなんだがな。

326 :デフォルトの名無しさん:2009/09/07(月) 02:03:11 .net
結局馬鹿が使えば穴開きっぱなしなんだから無駄な肥大化じゃねって言う

327 :デフォルトの名無しさん:2009/09/07(月) 02:08:54 .net
そんな馬鹿は最初からC++なんて使うな。
JavaかC#使っておけ

328 :デフォルトの名無しさん:2009/09/07(月) 02:33:08 .net
なんでこんなに必死なのかな?
スマートポインタに意義があると困っちゃう人って、どんな人だろう?

329 :デフォルトの名無しさん:2009/09/07(月) 12:05:36 .net
>>320
>C++自体の「肥大化」
kwsk
「仕様の肥大化」と >>319 以外に
何が「肥大化」すると?

330 :デフォルトの名無しさん:2009/09/08(火) 01:17:17 .net
10年ぶりに触ったが、すっかり忘れてる。
テンプレート周りのコンパイルエラーが全然、理解できない。
関数からローカル変数の参照返して、例外起こしちゃうし…
受け側でコピーコンストラクタ用意しておけば大丈夫って思ってたけど、
一時変数とごっちゃになっていたらしい。
しばらくリハビリが必要そうだ…

331 :デフォルトの名無しさん:2009/09/08(火) 14:09:58 .net
テンプレート絡みのエラーメッセージが意味不明なのはしょーがない。

332 :デフォルトの名無しさん:2009/09/08(火) 18:55:53 .net
ま さ に 肥 大 化

333 :デフォルトの名無しさん:2009/09/11(金) 08:58:46 .net
権限と責任はセットで与えられて然るべきものである
よって責任を負えない素人や才無き者はC++に触れてはならない

334 :デフォルトの名無しさん:2009/11/24(火) 06:17:01 .net
消去法でC++って人は多いんじゃないの?
ネイティヴコンパイルで他にいい言語って何よ?

335 :デフォルトの名無しさん:2009/11/24(火) 07:33:36 .net
D言語
Objective-C
Object Pascal

336 :デフォルトの名無しさん:2009/11/24(火) 07:37:33 .net
やっぱりどれもぱっとしないな

337 :デフォルトの名無しさん:2009/11/27(金) 13:27:25 .net
いずれすべてC#に統合されると港では言われてるけど本当なの?(´・ω・`)

338 :デフォルトの名無しさん:2009/11/27(金) 13:56:24 .net
>>337
頭の悪い巷があったもんだ。

339 :デフォルトの名無しさん:2009/11/27(金) 14:35:51 .net
Native C# か Native VB が出ればC++は捨てていい。

D言語ってまだ話題になってるのか?

340 :デフォルトの名無しさん:2009/11/27(金) 15:01:06 .net
Kコンパイラなら・・・

341 :デフォルトの名無しさん:2009/11/27(金) 15:51:58 .net
>>339
つ[ngen]
ところが、世の中 Windows だけじゃないんだが。

342 :デフォルトの名無しさん:2009/11/27(金) 15:59:21 .net
GCC+C言語、C++が無いと
Linuxの世界じゃ生きていけない

343 :デフォルトの名無しさん:2009/11/27(金) 16:04:59 .net
>>341

つ[ngen]

おおっ!こんなのが出てるんですね。
C#に乗り換えようかなぁ。

でも、どっぷりとC++につかってるし、FORTRANに次ぐ
スピードといったらC++しかないからなぁ。

あ、>>339は一般論ではなく、俺的にはと言ったまでです。

344 :デフォルトの名無しさん:2009/11/27(金) 18:51:06 .net
おまえらがんばって落とし穴のないスマポ作ってくれ

345 :デフォルトの名無しさん:2009/11/27(金) 22:57:58 .net
ただメジャーになってくれないと解説本とかが充実しないからちっとも広まらないぞ。

346 :デフォルトの名無しさん:2010/01/03(日) 23:05:36 .net
これからの時代は Go! だ

347 :デフォルトの名無しさん:2010/02/08(月) 18:31:42 .net
0が偽でそれ以外が真とか気持ち悪すぎ

348 :デフォルトの名無しさん:2010/02/08(月) 18:48:25 .net
なんで?
0と3が偽とかのほうが気持ち悪くないか?

349 :デフォルトの名無しさん:2010/02/09(火) 07:15:14 .net
真偽値はtrue/falseだけにしてくれ、数値まで真偽値扱いするなということでしょ。
自分もある程度はそう思うから、if (i)ではなくif (i == 0)って書く、iが数値型なら。

350 :デフォルトの名無しさん:2010/02/09(火) 20:26:59 .net
Cが生まれた時代にはCにとっては実に合理的だったと思うけど
CPUにとってのゼロの意味も偽だし

351 :デフォルトの名無しさん:2010/02/10(水) 00:47:34 .net
だいたい筋肉脳アメリカ人がつくったものはどれも大味すぎる

352 :デフォルトの名無しさん:2010/02/10(水) 00:49:05 .net
普通にboolのある言語を先に学んだ人には
C/C++のif()は気持ち悪いんだわ

353 :デフォルトの名無しさん:2010/02/10(水) 01:57:40 .net
でっていう

354 :デフォルトの名無しさん:2010/02/10(水) 10:55:08 .net
気持ち悪いなら
他人の作成したソースコードを読まなければよい

355 :デフォルトの名無しさん:2010/02/10(水) 11:11:32 .net
整数型を真偽値に変換するときに0以外を真
真偽型を整数値に変換するときに真が1で偽が0
ポインタ型を真偽値に変換するときにヌル以外を真
とすると決まっているだけで
C++のboolもCの暗黙の真偽型も真と偽の二つの値しかとらない
暗黙の型変換が気持ち悪いのは同意

356 :デフォルトの名無しさん:2010/02/13(土) 12:50:54 .net
boolのある言語から入ったけど、Cの真偽の判定は
リーズナブルだと思う
特に p をポインタとして if(p) という書き方は美しくて好き

357 :デフォルトの名無しさん:2010/02/13(土) 13:11:56 .net
lintっていうツールがあってだな

まぁ、美しいのは認めるが

358 :デフォルトの名無しさん:2011/02/22(火) 01:30:29.74 .net
http://yosefk.com/c++fqa/fqa.html

359 :デフォルトの名無しさん:2011/03/10(木) 21:57:17.96 .net
0かそれ以外で真偽を判定するのは
cだからじゃなくてマシン語がそうだからじゃないの?

360 :デフォルトの名無しさん:2011/03/23(水) 14:19:34.90 .net
もともと仕様がそうなった理由は実装の都合かもしれないが、
実装依存じゃなくて現に言語仕様で決まっている以上は「Cだから」だ

361 :デフォルトの名無しさん:2011/04/30(土) 23:00:53.65 .net
そもそも、ZEROは数じゃないってことじゃないの?

例えば
ここに、「りんご」が0個あります
この「りんご」は「りんご」ですか?
って事


362 :デフォルトの名無しさん:2011/05/01(日) 11:21:22.49 .net
>>356
ぼくも(´・ω・`)

363 :デフォルトの名無しさん:2011/09/19(月) 21:36:37.12 .net
349のifでわざわざ0と比較しちゃう書き方はアセンブリ見ると無駄が増えてたと思う(vc)
油断は禁物だ

364 :デフォルトの名無しさん:2011/09/19(月) 22:33:00.57 .net
>>363
普通は最適化で全く同じ扱いになるもんだが。

365 :デフォルトの名無しさん:2011/11/20(日) 11:24:50.79 .net
なるもんだがだよね

366 :デフォルトの名無しさん:2011/11/20(日) 12:06:59.90 .net
C++関連スレの多くが2008年キックオフか...。 当時は活気があったんだろうな。 ここ2年ぐらいで凋落の坂を下ったというわけか?


367 :デフォルトの名無しさん:2011/11/20(日) 12:10:00.68 .net
C++11でnullptrが新設されたから0の問題は解決しただろ

368 :デフォルトの名無しさん:2011/11/21(月) 12:29:57.89 .net
>>366
2ch全体がね。

369 :デフォルトの名無しさん:2011/11/24(木) 06:31:17.12 .net
凋落してるのは2chの方だな

370 :デフォルトの名無しさん:2011/12/07(水) 19:09:09.79 .net




自身が聞いた情報によると、もうじき中国はバブルがはじけて昔の貧乏な中国に戻るんだぜ
もう経済は破綻してて、取り戻すのは無理なんだそうだな


その世界ではやたら有名な政府関係者筋から聞いた確かな情報だな

まあお前ら頭の良い連中には、今さらなくらいのネタだ、
お前らからすればもう常識的なくらいの知識だろうぜ









371 :プログラマ:2011/12/11(日) 00:27:36.40 .net
イテレータなんかを使うとポインタを上手く手なずけてる快感があるな。
C++にはまり込むと廃人になりそうだ。
複雑さの背景には機械の不条理さを手なずけるための工夫があるんだな。

372 :デフォルトの名無しさん:2011/12/21(水) 19:31:18.55 .net
C++11はAutoがやっと来てくれたなって感じ

373 :デフォルトの名無しさん:2012/09/13(木) 23:24:13.58 .net
foreachはまだ使えないの?

374 :デフォルトの名無しさん:2012/09/15(土) 03:51:36.83 .net
君が決断すれば使えるよ

375 :デフォルトの名無しさん:2012/10/20(土) 10:37:35.37 .net


376 :デフォルトの名無しさん:2012/12/22(土) 14:28:33.52 .net
template <int N> struct Factorial {
enum { value = N * Factorial<N - 1>::value };
};
template <> struct Factorial<0> {
enum { value = 1 };
};

377 :デフォルトの名無しさん:2013/01/07(月) 20:24:22.43 .net
>>373
int a[] = {1, 2, 3};
for (int x : a)
{
std::cout << x << std::endl;
}
名称はrange-based for文。
もうVC++でもg++でも使える。

378 :デフォルトの名無しさん:2013/01/08(火) 00:22:13.20 .net
質問した人だけど
ありがとう
VC++2008じゃだめっぽい

379 :デフォルトの名無しさん:2013/01/13(日) 12:28:49.72 .net
Cから離れるほど存在意義を失う。

380 :デフォルトの名無しさん:2013/01/22(火) 07:20:56.78 .net
凋落(ちょうらく)

381 :デフォルトの名無しさん:2013/01/27(日) 00:55:46.83 .net
C++はクラスと仮想関数の実装でやめておけば良い言語だった

ガベージコレクションを持たず、デストラクタが必要なこと自体は否定しない
しかしその状態で例外を実装したのが言語として終わった

382 :デフォルトの名無しさん:2013/01/27(日) 01:12:57.06 .net
>>381
例外の何が問題なの?

383 :デフォルトの名無しさん:2013/01/27(日) 13:56:47.20 .net
template も問題
boost みたいなまともな標準クラスライブラリが無かったのも問題

384 :デフォルトの名無しさん:2013/01/27(日) 14:05:20.67 .net
STL は無視でつか?

385 :デフォルトの名無しさん:2013/01/27(日) 14:12:11.24 .net
WTL / ATL はともかく STL のどこがまともなんだよ!

386 :デフォルトの名無しさん:2013/01/27(日) 15:02:28.62 .net
>>383
標準とかいわれなければ覚えようとしないダメな子なんですね、よくわかります

387 :デフォルトの名無しさん:2013/01/27(日) 15:12:44.77 .net
>>383
「〜が問題」とかじゃなくてさ、技術的な問題点を具体的に挙げようよ。

388 :デフォルトの名無しさん:2013/01/27(日) 19:42:42.06 .net
デストラクタがあるからこそ例外が生きるんじゃないか

389 :デフォルトの名無しさん:2013/01/27(日) 19:45:32.78 .net
RAIIでつね
確かに確かに

390 :デフォルトの名無しさん:2013/01/27(日) 21:06:21.32 .net
GCもデストラクタもなしで例外導入されたらそれこそ問題w
何も分かっちゃいねえ

391 :デフォルトの名無しさん:2013/01/31(木) 00:58:02.79 .net
例外実装したのならfinalyは必須
try〜catchの仕様もウンコだし、C++は欠陥言語と言わざるを得ない

392 :デフォルトの名無しさん:2013/02/08(金) 22:11:55.64 .net
RAIIラッパーを書くのは確かにだるい。
スコープガードの技法で楽にはなったけど、
なんか直感的じゃないようなそうでもないような。

まあ、いまさらほしい機能でもないや>finally

393 :デフォルトの名無しさん:2013/02/09(土) 00:56:55.93 .net
デストラクタがあればfinallyなんて大体不要

394 :デフォルトの名無しさん:2013/02/10(日) 15:17:36.54 .net
デストラクタのない欠陥言語だと
finallyの中にグダグダと泥臭い記述をするんだよ

395 :デフォルトの名無しさん:2013/02/17(日) 02:42:48.81 .net
例外キャッチもせず、関数の初めでnew、終わりでdelete、
しかもnewの戻り値がNULLでないかチェックしてるアホコードを書く
C上がりの低脳PGが未だに大勢いる
当然メモリリーク起きまくりでまともに動きゃしないが、書いた当人は
「おかしい、ちゃんとnewとdeleteは対にしてるしエラーチェックもしてるのに」
とか言いながらトンチンカンなデバッグを何日もやっている

C++がなまじCの知識だけでもそこそこ書けてしまうせいで
大量の地雷コードが作られてしまった

396 :デフォルトの名無しさん:2013/02/17(日) 07:28:14.81 .net
Hoge *h = NULL;
h = new Hoge;
if(!h) return 0;
...
delete h;
return 1;

なら例外拾わなくても安全

397 :デフォルトの名無しさん:2013/02/17(日) 09:04:56.88 .net
>>396
えっ?

398 :デフォルトの名無しさん:2013/02/17(日) 10:13:42.47 .net
>>396で問題になるケースってなんだ
operator newがbad_alloc以外を投げる場合とか?

399 :デフォルトの名無しさん:2013/02/17(日) 10:45:27.23 .net
new(nothrow)で押し通すのも一つの哲学

400 :デフォルトの名無しさん:2013/02/17(日) 13:12:42.21 .net
>>398
…の所で何らかの例外が発生した時

401 :デフォルトの名無しさん:2013/02/17(日) 13:17:11.48 .net
>>400
なるほど・・・

402 :デフォルトの名無しさん:2013/02/21(木) 14:05:41.50 .net
スマポ行っとけ

403 :デフォルトの名無しさん:2013/03/21(木) 00:47:13.41 .net
メモリリークの危険があるからC++は駄目という主張は多いが、それくらいカバーできないで
プログラマ名乗るのもおこがましいのでは?

404 :デフォルトの名無しさん:2013/03/21(木) 00:52:47.38 .net
>>403
個人の話ならその通り、というか、その人の自由。
会社では、そういう問題ではない。

405 :デフォルトの名無しさん:2013/03/21(木) 00:57:46.67 .net
技術屋としてはC++を使いこなしたいと思わんかねえ

406 :デフォルトの名無しさん:2013/03/21(木) 01:05:12.01 .net
立場によって意見も異なるって事でしょ。
結果として、要求を満たすモノを作れれば、個人のスキルなんか気にしないし、言語なんかなおさら何でも良いのが会社。

407 :デフォルトの名無しさん:2013/03/21(木) 01:12:40.59 .net
ただ動きゃいいソフトとパフォーマンスが必要なソフトがある。
つか技術者の技術力が無くなったら国力低下だぞ

408 :デフォルトの名無しさん:2013/03/21(木) 01:30:25.08 .net
だから、要件を満たせばって言ってるでしょ。
何で、ただ動くソフトとパフォーマンスが必用なソフトが引き合いになるんだよ。
パフォーマンスが要件にあるなら、当然満たす必要があるわけだが、それは技術力とは関係無い。
結果が出せるかどうか、それが全て。

409 :デフォルトの名無しさん:2013/03/21(木) 02:14:32.57 .net
まあ、結果をだせるやつが技術力のあるやつとも言えるよな
結果も出せないで、技術力云々言うやつは論外だが、結構多いので困る

410 :デフォルトの名無しさん:2013/03/21(木) 05:34:58.94 .net
>>407
もう手遅れ

411 :デフォルトの名無しさん:2013/12/28(土) 12:30:30.67 .net
ぬるぽ

412 :デフォルトの名無しさん:2013/12/28(土) 12:50:24.50 .net
技術力w
こんなものバズワード以外のなんだ?

413 :デフォルトの名無しさん:2013/12/28(土) 12:52:42.81 .net
>>405
中二病の高校生か大学生ぐらいのもん

414 :デフォルトの名無しさん:2013/12/28(土) 16:00:39.58 .net
ところが世の中のメジャーなアプリは殆どC++で実装されているというのが現実
Javaや.netでさえw
まあITドカタ君たちには無理だし必要ないから手を出さないほうがいいよ

415 :デフォルトの名無しさん:2013/12/28(土) 23:48:45.51 .net
C++で組まなきゃ最新のPCでも反応は鈍いしGUIはショボいし無意味な飾りは多いし
イライラするソフトしか作れん

416 :デフォルトの名無しさん:2014/01/10(金) 16:00:27.31 .net
受注あるの?

417 :デフォルトの名無しさん:2014/03/16(日) 23:26:36.70 ID:MUEEKwnJ.net
C++抜きで大規模なシステムを組むのは難しい

418 :デフォルトの名無しさん:2014/03/17(月) 06:18:15.96 ID:xpmTlL+N.net
そういや、同じくcの拡張であるObjective-cはどんな印象をもっている?

419 :デフォルトの名無しさん:2014/03/17(月) 07:13:56.11 ID:mbbiExwV.net
inline Smalltalk を書ける c/c++ なんだけど、Smalltalk の印象ってこと?

420 :デフォルトの名無しさん:2014/09/19(金) 14:28:40.09 ID:Xfkvubm0.net
Objective-Cはアップルの完全な管理下にあるという印象

421 :デフォルトの名無しさん:2014/09/23(火) 20:18:14.38 ID:49Grt2TR.net
管理下っていっても結局clangでしょ
管理してんのは上っ面だけ

422 :デフォルトの名無しさん:2014/10/14(火) 20:25:04.78 ID:rQaDsYaD.net
Interface欲しい
イディオムで再現じゃなくてちゃんとサポートしてほしい

423 :デフォルトの名無しさん:2014/10/27(月) 23:33:24.43 ID:X3SUClO7.net
Herb Sutter氏の語る現代的C++プログラミングの基本
http://www.infoq.com/jp/news/2014/10/modern-cpp-essentials

424 :デフォルトの名無しさん:2016/03/06(日) 19:39:39.71 ID:RPPt6+ET.net
「<<」 ってなんか恥ずかしくないか。
「オブジェクト指向言語だぜメッセージパッシングだぜ既存の言語とは違うぜー」
と鼻息荒くしていたころの厨二病的な気負いを感じる。
結局後続のオブジェクト指向言語は Java も C# もそんなことやってなくて、
C言語の次にオブジェクト指向やろうという連中の多数がC++じゃなくて
そっちへ行っちゃった今となってはなんかこっけいなだけに見える。

425 :デフォルトの名無しさん:2016/03/06(日) 20:27:51.29 ID:rlBUJ/rg.net
言語仕様が難しければ難しいほど良いというところはあるだろうな。
「関数型が流行ってる?じゃあ c++ にも入れよう!」みたいな感じで入れてる印象。
c++ にできないことがあってはならない!ってなところが異常な肥大化を生んでる。

426 :デフォルトの名無しさん:2016/03/06(日) 20:33:03.51 ID:ZOJzg1y4.net
>>424
というより単にオペレータオーバーロードできまっせ!
うちはこんなんできまっせ!
ってだけのことだと思う

427 :デフォルトの名無しさん:2016/03/29(火) 09:24:54.93 ID:/c8bAcK4.net
サッカーブッシュ日本代表日程ぷあたん(しゅっちょうまいくろ教育長交代)春文執行40代売上差額シュガーチョコ
https://www.youtube.com/watch?v=NDq1QoJY0nY宇ドナルドアナリストパワーストーンコーチングとしまえん
サッカーブッシュ日本代表日程古本屋よしたけしゅっちょうちょこしゅがー
ディーラー税務署天才開発者死亡詰みヨミドクターマイクロサービス不足
サッカーブッシュ日本代表日程ぷあたんシフト光金さかい強制バイト人権侵害問題
春分資源執行ニューヨーク低原価ぼったステーキソルトレイク福岡横浜新橋奴隷課金パチシフト強制バイト問題新潟米センター生残
コスメ24チャリティー隠れ40代生活保護プレイボーイバイトレードいたりあん接待問題
マスコミKARDローンケーオーサービス不足婚活パーティー寄付金執行原発ビジネス
FBIチャイニーズタイホテル売上事務所ガチャ決算ガチャキャンペーン(販売報道陣過激派組織向携帯最新情報提供終了
校長発言細心注意ノートン産廃エラー(著作権クレーム中国反応融資高額教育費)(中国捕鯨団体40代社員サッカーコメント
高額入学金ヤフウ新橋大学ヤフウ新橋理事長FX経費 おじや50代資産ガリバズフィード40代エリート

428 :デフォルトの名無しさん:2016/04/09(土) 17:32:05.36 ID:HBMEuijL.net
C++はパチンコにのめり込むようなもんや。博打に手だすのはやめときなはれ。

禿が死なん限り、簡略化されん

429 :デフォルトの名無しさん:2016/04/09(土) 21:11:20.50 ID:61dAkiVB.net
最新の言語機能でドヤ顔したい奴を集めてしまう言語。
linus が c++ を嫌がる一番の理由。

430 :デフォルトの名無しさん:2016/04/09(土) 22:41:33.55 ID:ALj0g4vo.net
俺がc++じゃなければダメな理由はRAIIの使い勝手の良さの一点のみ。
文法なんて何でもいいから、RAIIさえ実現出来れば今すぐCメインにするわ。

431 :デフォルトの名無しさん:2016/04/09(土) 23:58:00.84 ID:61dAkiVB.net
例外が絡まなければそんな複雑な話じゃないだろ。
結局例外が欲しいんだろ?

432 :デフォルトの名無しさん:2016/04/10(日) 00:42:41.15 ID:lctucWPJ.net
例外はいらない。
例え例外が無くてもメモリリークするようなコードを書く奴が多いから困ってる。
そう、そんな難しいことではないのにね。
だからRAIIを半強制してる。

433 :デフォルトの名無しさん:2016/04/10(日) 11:54:12.80 ID:vkQXckPD.net
それ強制してもリークしてるってことじゃん。
そういう奴はメモリがリークしなくてもどうせ他の資源をリークさせるようなコード書くだろうし、
言語で解決できる問題じゃない。

434 :デフォルトの名無しさん:2016/04/10(日) 13:46:39.83 ID:lctucWPJ.net
その通り。
完全解決しようなんて思ってない。
頻度の問題。

435 :デフォルトの名無しさん:2016/04/10(日) 13:50:46.50 ID:8kVuH12a.net
なんで半強制じゃなく完全強制しないの?
頻度の問題とか言ってる場合じゃないと思うが

436 :デフォルトの名無しさん:2016/04/10(日) 14:02:24.59 ID:lctucWPJ.net
ん?ちょっと論点が変わったね?
完全強制しても頻度が減るくらいで、完全解決できないからだよ。
何事も費用対効果と言うものがあるし。

437 :デフォルトの名無しさん:2016/04/10(日) 14:38:44.35 ID:8kVuH12a.net
newやmallocやopen等のリソース獲得コードをアプリ上位レベルで書くのを禁止すれば完全解決できるんだがね
リソース獲得をするのは下位ライブラリに閉じ込めてそれは然るべき人間が書いてしっかりデバッグする

438 :デフォルトの名無しさん:2016/04/10(日) 14:58:30.43 ID:9iv4xHc1B
きちんとロジック隠蔽できればnew/delete使っても問題ないと思う。
そのためのオブジェクト思考だし。
スマポ推奨する前に開発方法の意識を高めることの方が先だろと言いたい。

439 :デフォルトの名無しさん:2016/04/10(日) 14:59:22.45 ID:lctucWPJ.net
そうしてるけど?

440 :デフォルトの名無しさん:2016/04/10(日) 15:02:05.66 ID:lctucWPJ.net
だだ、下位レベルとは言え、その辺の事を徹底するのはコストがかかるんだよ。
俺一人で見切れる規模でもないし。

441 :デフォルトの名無しさん:2016/04/10(日) 19:17:40.19 ID:vkQXckPD.net
頻度の問題と言われても
コンストラクタ、デストラクタ用意した言語使うだけでそんな減るもんかね。
まあ経験的な話なんでなんとも言いようがないけど。

442 :デフォルトの名無しさん:2016/04/10(日) 19:45:44.41 ID:lctucWPJ.net
>>441
ぶっちゃけコンストラクタはいらない。
デストラクタだけ必要。

443 :デフォルトの名無しさん:2016/04/10(日) 19:52:08.09 ID:ipc8Qm5p.net
>>442
コンストラクタ不要論www

444 :デフォルトの名無しさん:2016/04/10(日) 19:52:48.78 ID:T2qNShRt.net
あー、わかるわー
デストラクタだけはC言語の範囲だと絶対実現できないもんなー
コンストラクタやクラスに近いものは作れるけど、実用的なデストラクタはムリ

445 :デフォルトの名無しさん:2016/04/10(日) 23:25:38.29 ID:9vV3r8su.net
そこはコストをかけてプロを採用すべき

446 :デフォルトの名無しさん:2017/06/22(木) 15:42:23.40 ID:Z11K6/Zh.net
c++と同じくらい万能でc++での速さを残して短所を改良した言語マダー?

447 :デフォルトの名無しさん:2017/11/07(火) 03:08:26.25 ID:xrZ8oMSz.net
boostブームのときは静観してたが
c++11はけっこういいんじゃないかと思った
VSもサポートしてるし

448 :デフォルトの名無しさん:2017/11/14(火) 00:18:41.58 ID:VaPcpODL.net
標準ヒープを当たり前に使うライブラリを作るやつが許せない
C++使わずGC言語使ってろよバカと思う
標準ライブラリも大抵は置き換え可能とはいえヒープありきのデザイン多すぎ

449 :デフォルトの名無しさん:2018/02/28(水) 17:52:18.95 ID:F8/eMdWm.net
Erlang最強ですねわかります

450 :デフォルトの名無しさん:2018/02/28(水) 22:44:36.60 ID:ugxprRf8.net
Elixir を使え

451 :デフォルトの名無しさん:2018/05/23(水) 20:17:30.83 ID:Au5e7VGg.net
僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』

6NO57

452 :デフォルトの名無しさん:2018/07/05(木) 01:27:32.32 ID:RfoszcD2.net
EED

総レス数 452
84 KB
掲示板に戻る 全部 前100 次100 最新50
read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★