C++の問題点について語るスレです
C++ってなんであんなに肥大化しちゃったの?
http://pc11.2ch.net/test/read.cgi/tech/1219902495/
探検
【信者】C++の問題点【アンチ】
■ このスレッドは過去ログ倉庫に格納されています
2008/10/10(金) 09:13:53
2008/10/16(木) 23:49:18
>>65
組み込み型に対する&&や||は短絡といって、
左から順に評価していって、
結果が分かったらそれ以降の評価を行わない仕組みになってる。
たとえば、
bool f1(); bool f2();
if ( f1() && f2() )
という式があったとすると、f1が偽の場合、f2は評価されないことが保証される。
しかし、&&や||のオーバーロードの場合は関数呼び出しと解釈されるため、短絡がない。
それどころか、関数呼び出し順序は標準に規定されていないため、
どちらが先に評価されるかすら分からない。
my_bool b1(); my_bool b2();
if ( b1() && b2() )
この場合、b1とb2のどちらが先に評価されるか分からない(処理系依存)。
分かりにくいバグの元になる、コードの可搬性を損なう、などの理由から
&&や||のオーバーロードは推奨されない。
組み込み型に対する&&や||は短絡といって、
左から順に評価していって、
結果が分かったらそれ以降の評価を行わない仕組みになってる。
たとえば、
bool f1(); bool f2();
if ( f1() && f2() )
という式があったとすると、f1が偽の場合、f2は評価されないことが保証される。
しかし、&&や||のオーバーロードの場合は関数呼び出しと解釈されるため、短絡がない。
それどころか、関数呼び出し順序は標準に規定されていないため、
どちらが先に評価されるかすら分からない。
my_bool b1(); my_bool b2();
if ( b1() && b2() )
この場合、b1とb2のどちらが先に評価されるか分からない(処理系依存)。
分かりにくいバグの元になる、コードの可搬性を損なう、などの理由から
&&や||のオーバーロードは推奨されない。
2008/10/17(金) 00:22:41
2008/10/17(金) 00:26:31
>>組み込み型に対する&&や||は短絡といって、
それと同じ構造にすればいいだろ
それと同じ構造にすればいいだろ
2008/10/17(金) 00:29:42
>>74
C#とかそれを目指している。
C++でもBoost.Lambdaは頑張った。
あと今から同じ構造になる仕組みをC++に持ち込んだとしても、
「互換性のため」現状の&&と||もそのまま残ること間違いない。
C#とかそれを目指している。
C++でもBoost.Lambdaは頑張った。
あと今から同じ構造になる仕組みをC++に持ち込んだとしても、
「互換性のため」現状の&&と||もそのまま残ること間違いない。
2008/10/17(金) 01:43:05
比較的どうでもいい豆知識だな
2008/10/17(金) 01:51:46
遅延評価の考え方がどうでもいい豆知識っすか
Cにどっぷりはまるとそうなっちゃうのね
Cにどっぷりはまるとそうなっちゃうのね
2008/10/17(金) 02:33:00
短絡評価 short-circuit evaluation と遅延評価 lazy evaluation はまったくの別物だぞ
遅延評価は、必要になるまで変数の値の計算を先延ばしにするHaskellのアレだ
遅延評価は、必要になるまで変数の値の計算を先延ばしにするHaskellのアレだ
2008/10/17(金) 02:37:48
同じ様なもんだろ
右オペランドを遅延評価することを短絡評価という
右オペランドを遅延評価することを短絡評価という
80デフォルトの名無しさん
2008/10/17(金) 02:44:31 じゃあ遅漏評価は?
2008/10/17(金) 03:07:21
>79
遅延評価はもっと広い意味の言葉だから混同するとややこしい。
遅延評価はもっと広い意味の言葉だから混同するとややこしい。
2008/10/17(金) 08:55:24
>>64
何の指摘にもなってないよ
何の指摘にもなってないよ
83デフォルトの名無しさん
2008/10/17(金) 09:10:07 オーバーロード関数のDLLが・・・
2008/10/17(金) 09:13:17
>>83
日本語でok
日本語でok
2008/10/17(金) 10:40:56
オーバーロードしたら&&が論理和どころか論理演算ですらある必要がないので、
通常と同じ動作にしたらいいじゃんという主張は無意味だろ。
通常と同じ動作にしたらいいじゃんという主張は無意味だろ。
2008/10/17(金) 11:07:09
演算子の元の意味と大きく異なるオーバーロードは駄目だろ
おまえは+が加算である必要が無いからって乗算にするのか?
おまえは+が加算である必要が無いからって乗算にするのか?
2008/10/17(金) 12:04:19
> 演算子の元の意味と大きく異なるオーバーロードは駄目だろ
そこで << ですよ
そこで << ですよ
2008/10/17(金) 12:10:38
2008/10/17(金) 13:09:18
常識という眼鏡で僕達の世界はのぞけやしないのさ
夢を忘れた古いプログラマーたちよ
アンドじゃないアンドじゃない
素敵な世界
夢を忘れた古いプログラマーたちよ
アンドじゃないアンドじゃない
素敵な世界
2008/10/17(金) 15:03:38
>>88
operator&&() が my_bool のメンバならね。
でも
bool operator&&(const my_bool& a, const my_bool& b)
かも知れない。
更に、b1 が左辺値ではなく my_bool を戻す式だったとき、
やっぱり b2 とどっちが先に評価されるかは判らない。
operator&&() が my_bool のメンバならね。
でも
bool operator&&(const my_bool& a, const my_bool& b)
かも知れない。
更に、b1 が左辺値ではなく my_bool を戻す式だったとき、
やっぱり b2 とどっちが先に評価されるかは判らない。
2008/10/17(金) 16:06:02
>>90
引数の評価順を重要視する意味がよくわからん
引数の時点で、真偽がわかったとしても関数から抜け出す手段は無いとおもうが?
b1 && b2 && b3
の式の場合
operator&&(operator&&(b1, b2), b3)
となって、operator&&(b1, b2)が偽の場合でも、一番外側のoperator&&()が実行されるから嫌だって事なら、ちょっとだけ理解できるかもしれないが
だからと言って、C++の欠陥だと大声で言うようなものでも無いと思うのですが
引数の評価順を重要視する意味がよくわからん
引数の時点で、真偽がわかったとしても関数から抜け出す手段は無いとおもうが?
b1 && b2 && b3
の式の場合
operator&&(operator&&(b1, b2), b3)
となって、operator&&(b1, b2)が偽の場合でも、一番外側のoperator&&()が実行されるから嫌だって事なら、ちょっとだけ理解できるかもしれないが
だからと言って、C++の欠陥だと大声で言うようなものでも無いと思うのですが
2008/10/17(金) 16:52:03
>>91
短絡評価のメリットが解らない、ってこと?
短絡評価のメリットが解らない、ってこと?
2008/10/17(金) 17:17:31
2008/10/17(金) 17:41:19
2008/10/17(金) 18:00:57
バグの原因は小さいものだから
大きな問題ではないと考えるのも無理はない
大きな問題ではないと考えるのも無理はない
2008/10/17(金) 18:05:33
INT i=1,j=1; //なんかint的なクラスだと思いね
i++ || j++;
cout << i << "," << j;
||がオーバーロードされていなければ「2,1」が表示される
されていれば「2,2」が表示される
open(file) && abort();
&&がオーバーロードされていなければ、ファイルオープンに成功すれば処理が続行される
されていればファイルオープンに成功したのに異常終了する
i++ || j++;
cout << i << "," << j;
||がオーバーロードされていなければ「2,1」が表示される
されていれば「2,2」が表示される
open(file) && abort();
&&がオーバーロードされていなければ、ファイルオープンに成功すれば処理が続行される
されていればファイルオープンに成功したのに異常終了する
2008/10/17(金) 18:32:16
2008/10/17(金) 18:46:18
2008/10/17(金) 18:52:24
つーか短絡評価しないなら&や|だけでいい
何のためにわざわざ&&や||が用意されてると思ってるんだ
何のためにわざわざ&&や||が用意されてると思ってるんだ
100デフォルトの名無しさん
2008/10/17(金) 18:54:39101デフォルトの名無しさん
2008/10/17(金) 18:55:39 そうだな
ごめんアホなこと言った
ごめんアホなこと言った
102デフォルトの名無しさん
2008/10/17(金) 19:44:48103デフォルトの名無しさん
2008/10/17(金) 19:50:03104デフォルトの名無しさん
2008/10/17(金) 19:50:39 >>102
>論理式の処理過程を期待してプログラムする
「期待」じゃなくてC/C++は「仕様で」「明確に」「わざわざ」評価順を
定義しているわけだが
&& || に関してはな
何の意味も無くそんな仕様にしてると思ってんの?
ま、&&や||は論理演算、bool代数だよな?そこはその通りだ。
フローコントロールもセマンティクスも変えちまう
オーバーロードなんてもってのほかだよな?
>論理式の処理過程を期待してプログラムする
「期待」じゃなくてC/C++は「仕様で」「明確に」「わざわざ」評価順を
定義しているわけだが
&& || に関してはな
何の意味も無くそんな仕様にしてると思ってんの?
ま、&&や||は論理演算、bool代数だよな?そこはその通りだ。
フローコントロールもセマンティクスも変えちまう
オーバーロードなんてもってのほかだよな?
105デフォルトの名無しさん
2008/10/17(金) 19:59:18 bool banana;
if(!banana)
{
// ↑気持ち悪いねこれ。
}
if(!banana)
{
// ↑気持ち悪いねこれ。
}
106デフォルトの名無しさん
2008/10/17(金) 20:01:54 if(true != banana)
if(false == banana)
好きなほうを選べ
if(false == banana)
好きなほうを選べ
107デフォルトの名無しさん
2008/10/17(金) 20:02:26 VB.NETではVBには無かった短略評価の
AndAlso OrElse という(キモい)演算子が追加されているのだが
その意味も分からないんだろうねえ
AndAlso OrElse という(キモい)演算子が追加されているのだが
その意味も分からないんだろうねえ
108デフォルトの名無しさん
2008/10/17(金) 20:10:39109デフォルトの名無しさん
2008/10/17(金) 20:12:51110デフォルトの名無しさん
2008/10/17(金) 20:19:03 &&や||をオーバーロードの場合はコンパイラが短絡すればいいだけだろ
111デフォルトの名無しさん
2008/10/17(金) 20:27:57 何だそれ
互換性が無くなってさらにカオスになるだけじゃねえか
互換性が無くなってさらにカオスになるだけじゃねえか
112デフォルトの名無しさん
2008/10/17(金) 20:31:27 &&と||の意味がわかんねー奴はC++厨気取りたいんなら
More Effective C++ぐらい嫁
More Effective C++ぐらい嫁
113デフォルトの名無しさん
2008/10/17(金) 20:36:52 .front()も.begin()も同じで良いジャン
なんで違うの
なんで違うの
114デフォルトの名無しさん
2008/10/17(金) 20:48:12115デフォルトの名無しさん
2008/10/17(金) 20:52:08 front取り忘れたのかね
116デフォルトの名無しさん
2008/10/17(金) 21:20:33 map持っていて
<<でkeyを流し込んだら valueが返ってくるクラスはあり?
<<でkeyを流し込んだら valueが返ってくるクラスはあり?
117デフォルトの名無しさん
2008/10/17(金) 21:29:44 演算子でやる理由がわからん
118デフォルトの名無しさん
2008/10/17(金) 21:46:28119デフォルトの名無しさん
2008/10/17(金) 21:51:59 []だとポインタのとき面倒じゃね?
120デフォルトの名無しさん
2008/10/17(金) 21:54:05 value = (*hogemap)[key]
でおけ
でおけ
121デフォルトの名無しさん
2008/10/17(金) 21:58:28 あえて operator()
122デフォルトの名無しさん
2008/10/17(金) 22:39:11 ttp://homepage2.nifty.com/well/Operator.html#arrow_ast
なんでもあり
なんでもあり
123デフォルトの名無しさん
2008/10/17(金) 23:04:00 >>119
いやポインタに対して使うときは全部だろ
いやポインタに対して使うときは全部だろ
124デフォルトの名無しさん
2008/10/18(土) 00:55:05 C++のIDEに自動的にヘッダやnamespaceを宣言してくれる奴って何かあります?
Javaとかだと適当にクラス使ってもクラスパスから候補探してくれるのがメジャーなIDEの基本機能にある。
Javaとかだと適当にクラス使ってもクラスパスから候補探してくれるのがメジャーなIDEの基本機能にある。
125デフォルトの名無しさん
2008/10/18(土) 05:16:34126デフォルトの名無しさん
2008/10/18(土) 05:38:24 自動的にヘッダを追加するようなIDEは怖くて使えません
127デフォルトの名無しさん
2008/10/18(土) 13:39:49 さすが生産性の無さでユーザーがみるみる減っている言語だけはあるw
128デフォルトの名無しさん
2008/10/18(土) 13:56:13 >>124
C++のヘッダのincludeは単なるプリプロセッサ命令で、やってることは
原始的なコピペ
Javaは自己記述的なjarやclassからシンボルをインポートしてるわけだ
C++でそういうことをやるのは技術的に不可能ではないだろうが
向いているとは思えんな
現代的なIDEなどが出るよりはるか以前に作られた化石言語なのだから仕方が無い
C++のヘッダのincludeは単なるプリプロセッサ命令で、やってることは
原始的なコピペ
Javaは自己記述的なjarやclassからシンボルをインポートしてるわけだ
C++でそういうことをやるのは技術的に不可能ではないだろうが
向いているとは思えんな
現代的なIDEなどが出るよりはるか以前に作られた化石言語なのだから仕方が無い
129デフォルトの名無しさん
2008/10/18(土) 14:06:23 C++はIDEととことん相性悪いからな
まるでIDEを妨害しようとしているかのような仕様
VSやBuilderやCDTはマジ頑張ってると思うのですよ
頭が下がる
まるでIDEを妨害しようとしているかのような仕様
VSやBuilderやCDTはマジ頑張ってると思うのですよ
頭が下がる
130デフォルトの名無しさん
2008/10/18(土) 21:29:58 C++を有難がって使ってる奴なんているの?
居たとしたらちょっと馬鹿すぎる
居たとしたらちょっと馬鹿すぎる
131デフォルトの名無しさん
2008/10/18(土) 21:38:06 文句なしの代替が無いから使っているだけだよ。
132デフォルトの名無しさん
2008/10/18(土) 22:40:11 有難がって使うプログラミング言語なんてないだろ。
133デフォルトの名無しさん
2008/10/18(土) 22:51:52134デフォルトの名無しさん
2008/10/18(土) 22:53:30 C++が一番簡単だから使ってる
135デフォルトの名無しさん
2008/10/18(土) 22:59:07 結局、
136デフォルトの名無しさん
2008/10/18(土) 23:00:16 結局、このスレにC++信者なんて居なかったってオチか
137デフォルトの名無しさん
2008/10/19(日) 01:23:10 >>105
↑頭悪いねこれ。
↑頭悪いねこれ。
138デフォルトの名無しさん
2008/10/19(日) 14:06:06 C++が最高だと思って使ってる奴はいないだろ。
ただ分かってない上司やクライアントがいるからC++の仕事もあるってだけだ。
本当はCで十分だったり、C#やJavaの方が効率良かったりするんだが。
ただ分かってない上司やクライアントがいるからC++の仕事もあるってだけだ。
本当はCで十分だったり、C#やJavaの方が効率良かったりするんだが。
139デフォルトの名無しさん
2008/10/19(日) 14:12:04 C#やJavaをフロントエンドにして、
OS依存部分や、処理が思い部分を
C言語で書くスタイルがベストだな。
既にOracleがそうだし、CADもそういうのがある。
OS依存部分や、処理が思い部分を
C言語で書くスタイルがベストだな。
既にOracleがそうだし、CADもそういうのがある。
140デフォルトの名無しさん
2008/10/19(日) 14:23:15 C++はプログラム初級〜中級者向けのおもちゃとしてはそこそこ面白い
だが普通はすぐに暗黒面に気付いて使うのを辞めるor仕事で仕方なく使うだけだ
だが普通はすぐに暗黒面に気付いて使うのを辞めるor仕事で仕方なく使うだけだ
141デフォルトの名無しさん
2008/10/19(日) 14:41:12 その通り過ぎて何も言えねえ…
良い代替言語があれば良いんだけどね
良い代替言語があれば良いんだけどね
142デフォルトの名無しさん
2008/10/19(日) 14:53:48 D言語がふらふらしてなければなw
創始者が「仕様変えるぞー」を未だに自粛しないからこまったものだ。
創始者が「仕様変えるぞー」を未だに自粛しないからこまったものだ。
143デフォルトの名無しさん
2008/10/19(日) 16:11:15 まあ暗黒面に気付かないうちはまだまだ初心者ってことだ
それに気付いた時にはバッドノウハウばかりで他言語に応用が効かないのも悔しいところだ
それに気付いた時にはバッドノウハウばかりで他言語に応用が効かないのも悔しいところだ
144デフォルトの名無しさん
2008/10/19(日) 16:19:28 Plan9(笑)
D言語(笑)
D言語(笑)
145デフォルトの名無しさん
2008/10/19(日) 16:37:25 バッドノウハウを追求するのは楽しい
しかしチームでやる仕事ではゴメンだね
しかしチームでやる仕事ではゴメンだね
146デフォルトの名無しさん
2008/10/22(水) 11:30:38 クライアントから例外もテンプレートも(わからないから)使わないで欲しいって言われた
周辺環境もある意味では言語の問題点に含まれると思う
特にC++の場合、ひとによってスキルの差がありすぎ
せっかくのリソースが活かせないことが多い
まあ割の良い仕事だから我慢するけど、これならCの方が開発効率良いよorz
周辺環境もある意味では言語の問題点に含まれると思う
特にC++の場合、ひとによってスキルの差がありすぎ
せっかくのリソースが活かせないことが多い
まあ割の良い仕事だから我慢するけど、これならCの方が開発効率良いよorz
147デフォルトの名無しさん
2008/10/22(水) 17:05:15 Cの方が開発効率良い、に関しては、
だったらクラスも何も使わないでC同然に書けばいいじゃないと思う。
だったらクラスも何も使わないでC同然に書けばいいじゃないと思う。
148デフォルトの名無しさん
2008/10/22(水) 17:14:26149デフォルトの名無しさん
2008/10/22(水) 18:05:19150デフォルトの名無しさん
2008/10/22(水) 19:03:52 >>149
147でないけど
キャストは new の仕様を促すからそのほうがいいんじゃない。new の方が楽で型安全だし。
extern "C" はCとリンクする部分だけでいいよ。普通の C のライブラリだって extern "C" 使ってるし。
extern "C" を使わないほうが型安全だし。
147でないけど
キャストは new の仕様を促すからそのほうがいいんじゃない。new の方が楽で型安全だし。
extern "C" はCとリンクする部分だけでいいよ。普通の C のライブラリだって extern "C" 使ってるし。
extern "C" を使わないほうが型安全だし。
151デフォルトの名無しさん
2008/10/22(水) 19:18:08 >>150
newは例外まみれで鬱陶しい別の問題を引き起こすだろ
ただの関数形式のアロケータなら差し替えるのも簡単だ
C++をC++らしく使わないという仮定の話をしているようだから
それぐらいならCの方がいいと言ってるんだよ
クラスすら使わないC++で提供される付加価値よりは
グダグダなABIだの、さりげなく仕込まれる例外対策だののほうがずっと鬱陶しい
newは例外まみれで鬱陶しい別の問題を引き起こすだろ
ただの関数形式のアロケータなら差し替えるのも簡単だ
C++をC++らしく使わないという仮定の話をしているようだから
それぐらいならCの方がいいと言ってるんだよ
クラスすら使わないC++で提供される付加価値よりは
グダグダなABIだの、さりげなく仕込まれる例外対策だののほうがずっと鬱陶しい
152デフォルトの名無しさん
2008/10/22(水) 21:07:44 > ただの関数形式のアロケータなら差し替えるのも簡単だ
それと同じくらい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);
}
いや、これもずっと鬱陶しい「さりげなく仕込まれる例外対策」の内というならそれまでだけど。
それと同じくらい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 bad_allocが嫌ならnothrowつきのnewを使えばいいじゃない
ただ、例外を使わないようにするとどうせNULLチェックをサボる奴が出てくるので
むしろ有害だと思うけどな
ただ、例外を使わないようにするとどうせNULLチェックをサボる奴が出てくるので
むしろ有害だと思うけどな
154デフォルトの名無しさん
2008/10/23(木) 02:02:52 NULLチェックをサボるために例外を使うってことは、newする部分をまとめてtryに入れるんだろうけど、
スマートポインタかGCでもない限り、メモリリークの危険性がある。
STLで用意されてるauto_ptrはSTLコンテナに食わせられない糞仕様。
スマートポインタかGCでもない限り、メモリリークの危険性がある。
STLで用意されてるauto_ptrはSTLコンテナに食わせられない糞仕様。
155デフォルトの名無しさん
2008/10/23(木) 08:09:11 CAutoPtr
156デフォルトの名無しさん
2008/10/23(木) 11:08:44157デフォルトの名無しさん
2008/10/23(木) 11:46:55 std::tr1::shared_ptrかboost::smart_ptrのどっちかと間違えてるんだと思うが
どっちにしろどうしても必要な所で最低限の使用にしないと重すぎて酷いことになるからなぁ
auto_ptrはそこそこ軽いから割と気軽に使える
まあ、本当は生ポインタが一番いいんだけどな
プログラマが楽をするためだけにスマポの莫大なオーバーヘッドを持ち込むのは感心できない
どっちにしろどうしても必要な所で最低限の使用にしないと重すぎて酷いことになるからなぁ
auto_ptrはそこそこ軽いから割と気軽に使える
まあ、本当は生ポインタが一番いいんだけどな
プログラマが楽をするためだけにスマポの莫大なオーバーヘッドを持ち込むのは感心できない
158デフォルトの名無しさん
2008/10/23(木) 12:17:44 プログラマに苦労を強いると、バグの発生率が跳ね上がるでしょ。
多くの状況ではオーバーヘッドよりバグの方が深刻な問題になるんだから、楽はすべきだと思うけど。
多くの状況ではオーバーヘッドよりバグの方が深刻な問題になるんだから、楽はすべきだと思うけど。
159デフォルトの名無しさん
2008/10/23(木) 13:12:15 C + Boehm GCでいいやん
スマポなんかより便利だし
スマポなんかより便利だし
160デフォルトの名無しさん
2008/10/23(木) 13:21:50 >>157
boost::smart_ptr なんて存在しない。
どっちも shared_ptr。
あとオーバーヘッドなんて大したことないぞ。
ポインタに参照カウントの分の整数がついて回るだけ。
ポインタアクセス時は通常のポインタとほぼ同等
(レジスタ割り付けが多少阻害されるかもしれんが)。
コピーやデストラクト時に参照カウントの増減でこれも一瞬。
boost::smart_ptr なんて存在しない。
どっちも shared_ptr。
あとオーバーヘッドなんて大したことないぞ。
ポインタに参照カウントの分の整数がついて回るだけ。
ポインタアクセス時は通常のポインタとほぼ同等
(レジスタ割り付けが多少阻害されるかもしれんが)。
コピーやデストラクト時に参照カウントの増減でこれも一瞬。
161デフォルトの名無しさん
2008/10/23(木) 19:05:25 boost::intrusive_ptr 方式のスマートポインタが好き。
162デフォルトの名無しさん
2008/10/23(木) 20:50:24 UN*X では Objective-C が使えるから無理して C++ を使う必要は無いよね
163デフォルトの名無しさん
2008/10/23(木) 21:02:12 >>162
極一部のUnix以外ではCが主流というオチ。
極一部のUnix以外ではCが主流というオチ。
164デフォルトの名無しさん
2008/10/23(木) 21:22:07 unixだとc++なんか有象無象とひとつ
165デフォルトの名無しさん
2008/10/23(木) 21:28:01166デフォルトの名無しさん
2008/10/27(月) 19:09:41 C++
↓
C++0x
↓
C++(笑)
↓
C++0x
↓
C++(笑)
167デフォルトの名無しさん
2008/10/29(水) 13:28:21 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");
こうやって利用すればいいんでないの?
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 >>167
言いたい事は分かるけど、コピーコンストラクター位はつけた方がいいと思うんだ
言いたい事は分かるけど、コピーコンストラクター位はつけた方がいいと思うんだ
169デフォルトの名無しさん
2008/10/29(水) 13:46:13 「解決できるけどデフォルトで放置されている問題」が多いんだな
170デフォルトの名無しさん
2008/10/29(水) 13:55:15 >>167
なんだそれ
vAlloc<char> str1(100);
なんてやるなら
char str1[100];
でいいだろ
そのクラスはそれ以上のものをそれは何も提供していないし
何の解決にもなっていない
なんだそれ
vAlloc<char> str1(100);
なんてやるなら
char str1[100];
でいいだろ
そのクラスはそれ以上のものをそれは何も提供していないし
何の解決にもなっていない
171デフォルトの名無しさん
2008/10/29(水) 14:02:26 STLとかはAllocator差し替えられるけど
alloc()が例外投げること前提に作られてて
NULLチェックなんてしてるわけねーし
C++でデフォのnew捨てるってのは
事実上、標準を含む大半のライブラリを捨てるってこと
alloc()が例外投げること前提に作られてて
NULLチェックなんてしてるわけねーし
C++でデフォのnew捨てるってのは
事実上、標準を含む大半のライブラリを捨てるってこと
172デフォルトの名無しさん
2008/10/29(水) 14:03:41■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 「おこめ券は米以外の食品も買える。効果的な活用を」 地元で農水相 [山形県] [少考さん★]
- 【速報】「女芸人No.1決定戦 THE W」9代目女王にニッチェ! 7年ぶり3度目で悲願の優勝 [牛丼★]
- 高市首相の答弁書に「台湾有事答えない」と明記 存立危機発言当時 ★11 [蚤の市★]
- 【芸能】『女芸人No.1決定戦THE W』 粗品が最後にバッサリ「優勝賞金1000万円にしてはレベル低い大会」 [冬月記者★]
- 今年の流行語大賞 『働いて働いて働いてまいります』が受賞で不快感… 過労自殺の遺族らが会見「家族にむち打つような行為だ」 [冬月記者★]
- 【沖縄】開業4ヵ月でこれは…“国民の税金”投入の『ジャングリア沖縄』で見た衝撃的な光景と、モチベーションが低い一部スタッフの現状 [ぐれ★]
- クズ「勉強頑張らなかった奴は一生DQNと一緒に肉体労働しろ」☚勉強頑張れるのも環境と巡り合わせなんだが? [783475554]
- 正直教師が授業する必要なくね?
- インド料理屋に抗議に行った
- 【正論】検察「山上よ、どんな事情があろうと暴力が許されない」 [442080748]
- 熱はないけど倦怠感があるんやが
- スマホゲ問い合わせ俺「ここでこんなことしたらバグった!」返答「アカウント情報と画面のスクショと操作手順をメールで送って」
