NULLは使っちゃダメ?(C++)
■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@1周年
NGNGhttp://www.2ch.net/test/read.cgi?bbs=prog&key=954861526
と内容が一部かぶるかもしれませんが、
C++で、NULLは使っちゃダメと
http://www2s.biglobe.ne.jp/~gkimoto/j/oop/part1/ch09_nonull.html
と、ここに書いてありました。
ですが、実際、NULLが使われているプログラムを多く見かけます。
みなさんは、どうお考えですか??
0002名無しさん@1周年
NGNG0003名無しさん@1周年
NGNGNULLが使用禁止になったらプログラマやめるです。
0004>
NGNG数値としてつかってんだか、
無効ポインタとしてつかってんだか
区別つかないんでやめてほしい。
自分の世界だけで閉じるソースならどっちでもいいけど。
0005>1
NGNGC++処理系がNULLを0と定義してあれば問題無いです
0006名無しさん@1周年
NGNGと個人的には思うのだが。
0007名無しさん@1周年
NGNGコンパイラ様が結局はやってくださるので単なるコーダ、プログラマは
気にする必要はない。
つーか、こういうのは宗教がらみでしょ(藁)
0008名無しさん@1周年
NGNG0009名無しさん@1周年
NGNGnullキーワードが用意されないのは何か理由があるんでしょうか?
0010名無しさん@1周年
NGNGいう話しですから単純な宗教的な問題とはちょっと違うかも
しれませんね。C++で0でないと副作用が出る場合はキャスト
しようがありません。
普通処理系はCモードで((void *)0)@`C++モードで0になるよう
NULLを定義してあるはずなので、NULLを使っていてもその
副作用が問題になることは無いでしょうが、確かNULLでは
無く0を使うようにC++作った方は推奨されていたように
思います。
0011>9
NGNGそういえば、char*みたいな書き方を流行らせてしまったことも気に食わないです。
プログラミング言語C++の5.4.1見たら
char *const cp;
char const* pc;
なんて不統一なスタイル使ってるし。
0012名無しさん@1周年
NGNG>11
char *const cp; と
char const* pc; って意味同じなんだっけ?
0013名無しさん@1周年
NGNGプログラミング言語C++に書いてあります。(知ってるとは思うけど…)
>11
どう書けば統一されたスタイルなの?
0014>1
NGNGMicrosoftが出したサンプルからだ。
それからバカがNULLを数値でも使うようになった。
レビューで文句を言っても、マイクロソフトのソースにありますから
なんていわれて腹立ったなー。
今は白痴でもない限り混同しないと思う。
0015>14
NGNG>Microsoftが出したサンプルからだ。
>それからバカがNULLを数値でも使うようになった。
日本Sunのセミナーテキストにも同じまちがいがあった。
どうしよう。(藁
0016>15
NGNGサンマイクロシステムズ株式会社が正式名だと思うよ。
00171
NGNG結局のところ、この辺の問題ってのは、思想的な要素が大きいんですかね??
どういう副作用があるかってことを知ってる上で、
NULLを使うのなら、まあ問題ないってところですか・・・??
0018>12
NGNG意味は違ったはずだよ。
0019>13
NGNGchar *const cp
って書くなら、
const char* pc
ではなく、
const char *pc
って書けよって話だと思います。文脈からすると。
11さんは、char* p って、型名にアスターつける流儀について
言及されていたような。
ちなみに
char const* pc
は
const char* pc
のtypoっすよね? 俺がC++知らないだけ?
0020名無しさん@1周年
NGNGポインタの指す内容を変更できない のちがい
002119
NGNGconst char *pc
は、const char型へのポインタ。
つまり、*pc = 'a' などのように、pcの指す先の内容を
書きかえることができない。
char *const cp
は、cpは定数(つーかconst)であり、どのような定数かというと、
char *型の定数である、って意味。
だから、cp = &c2 みたいに、cp が別のところを指すように
することはできない。
002219
NGNG0023名無しさん@1周年
NGNGint * p = 0;
うーん、美づぐじぃコード・・(藁
002418
NGNGex) const char const tmp = 'a';
つー書き方が出来たはず。
002519
NGNGchar const
は等価ですね。アホでした。ごめんなさい。
19 の「ちなみに」以降はウソです。
0026VCではこうなってたぞ
NGNG/* Define NULL pointer value */
#ifndef NULL
#ifdef __cplusplus
#define NULL 0
#else
#define NULL ((void *)0)
#endif
#endif
0027名無しさん@1周年
NGNG手元に本ないんで、基本的なアイデアだけだけど・・・
class {
template <class T>
operator T*() { return (T*)0; }
} NULL;
こんな感じだったかな?
0028名無しさん@1周年
NGNGたしかK&Rの流儀なら
char * const cp;
char const *pc;
な感じになると思うんだけど。
というか、普段char*とかしておきながら、
constがつくとルールを変えるのは俺も気持ち悪すぎると思う。
const多いコードなら、それこそ*の位置がバラバラになるやん。
002928
NGNGchar* p@` q;
char *p@` *q;
の違いの話もあるし。
0030名無しさん@1周年
NGNGCHARP p@`q;
ってやるといいー!
0031名無しさん@1周年
NGNGストラウストラップ?
0032名無しさん@1周年
NGNG>CHARP p@`q;
これってどうなるの?
char* p@` q;
char *p@` *q;
のどっちと等価?
0033>31
NGNGというのは不親切なので、ARMの冒頭「日本の読者へ」から引用しましょう。
>Bjarne Stroustrup(ビョーン・ストラウストラップ)
っていうか、みんなこれ読んで、初めて読み方が判ったんだよ。
(Bjarneなんて読めるか! ってこの人どこの国、もしくはどこの国系の人?)
0034>32
NGNGchar *p@`*q;
と等価。
0035>31
NGNG本当はストロウストループのほうが近い(と思う)。
0036>32
NGNG0037名無しさん@1周年
NGNGhttp://www.research.att.com/~bs/homepage.html
デンマーク人だそうです。名前の発音の仕方も書いてあります。
0038>32
NGNG入門書でも眺めてみたら?
0039たまなし
NGNGhttp://hp.vector.co.jp/authors/VA000092/jokes/strup.html
"C++ は全部ネタでした 〜 Bjarne Stroustrup Interview about C++"
0040>39
NGNGマジな話、それ自体ネタじゃないんですか?
と思いたい… つーか、ネタだよな。
0041sage
NGNG0042名無しさん@1周年
NGNG0043名無しさん@1周年
NGNGC++プログラマ(多くはMS-VC++の使用を求められる)の平均的な時給は、
20〜30ドル程度に過ぎない。
0044たまなし
NGNG0045名無しさん@1周年
NGNGあのときは驚いた・・・
0046>41
NGNG(Joke I hope)
って書いてあるね。
真偽はナゾのままなのかな。
つか、読んでる間ニヤニヤしっぱなしだったよ(笑
0047名無しさん@1周年
NGNG0048名無しさん@1周年
NGNGネタだっていってよお!
0049>48
NGNG0050>49
NGNG0051名無しさん@1周年
NGNGそこの説明レベル低いな
0052>51
NGNG0053>51
NGNG0054名無しさん@1周年
NGNG0055>50
NGNG0056名無しさん@1周年
NGNG■ このスレッドは過去ログ倉庫に格納されています