値渡し、参照渡し、ポインタ渡しを議論する
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2006/03/14(火) 16:40:25このスレを用いて白熱した議論をお願いします。
0002デフォルトの名無しさん
2006/03/14(火) 16:41:59変数のアドレス、
変数が指し示す値
変数が指し示す値のアドレス
があります。ここで、それぞれに対して以下の定義を行います。
変数
メモリ空間上の特定の領域に名前をつけたものでし。
変数のアドレス
変数がメモリ上のどの位置(アドレス)にあるかを表す値です。
変数が指し示す値
読んで字のごとくです。
変数が指し示す値のアドレス
”変数が指し示す値”をメモリに確保する方法が主に2種類あります。
・変数(が占有するメモリ領域)に値そのものを保持する場合
・変数とは別のメモリ領域に保持する場合
前者の場合、変数が指し示す値のアドレス=変数のアドレス
後者の場合、変数が指し示す値のアドレス≠変数のアドレス
で、値渡し、参照渡し、ポインタ渡しを定義すると
値渡し:変数が指し示す値 を渡すこと。
参照渡し:変数のアドレス を渡すこと
ポインタ渡し:変数が指し示す値 を渡すこと。ただし、変数が指し示す値とは 値のアドレス です。
0003デフォルトの名無しさん
2006/03/14(火) 16:52:100004デフォルトの名無しさん
2006/03/14(火) 16:52:130005デフォルトの名無しさん
2006/03/14(火) 16:53:02ですね。すみません。
0006デフォルトの名無しさん
2006/03/14(火) 16:53:060007デフォルトの名無しさん
2006/03/14(火) 17:08:00ポインタは値だ。
ポインタの値渡しとポインタの参照渡しがある。
0008デフォルトの名無しさん
2006/03/14(火) 17:09:39void f(char &*p)
{
;
}
0009デフォルトの名無しさん
2006/03/14(火) 17:12:30http://ja.wikipedia.org/wiki/%E5%BC%95%E6%95%B0
0010デフォルトの名無しさん
2006/03/14(火) 17:15:030011デフォルトの名無しさん
2006/03/14(火) 17:26:110012デフォルトの名無しさん
2006/03/14(火) 17:34:340013デフォルトの名無しさん
2006/03/14(火) 17:40:44最初の変数をオブジェクトに変えて定義してくれ。
0014デフォルトの名無しさん
2006/03/14(火) 17:56:03「値のアドレス」て、もうアホかと
0015デフォルトの名無しさん
2006/03/14(火) 19:39:110016デフォルトの名無しさん
2006/03/14(火) 19:48:17http://human5.2ch.net/test/read.cgi/ms/1141694640/
8 名前:可愛い奥様[] 投稿日:2006/03/07(火) 11:05:23 ID:8dtluKkp
夫の歯ブラシで洗面所の排水溝掃除。
洗面所をビショビショに汚した罰だ。
20 名前:可愛い奥様[age] 投稿日:2006/03/08(水) 00:40:17 ID:pRrk6A21
前に頭きた時あって
1度だけ歯ブラシで肛門カキカキしちゃった
22 名前:可愛い奥様[] 投稿日:2006/03/08(水) 01:27:12 ID:gU5mHc7J
よかった。どこのお宅も同じようなことしてて。
24 名前:可愛い奥様[] 投稿日:2006/03/08(水) 01:36:35 ID:SSSFsTqE
そうそう、ヘンなモノはダンナのお皿へ直行だよね。
41 名前:可愛い奥様[] 投稿日:2006/03/08(水) 11:55:18 ID:sjj+/60Q
見てるだけで気が晴れるな!
皆さん、頑張ってね!
42 名前:可愛い奥様[sage] 投稿日:2006/03/08(水) 20:33:51 ID:Ju2N1s7+
年金分割が楽しみじゃのう
63 名前:可愛い奥様[] 投稿日:2006/03/10(金) 08:55:20 ID:qLfJYpJR
家族で密かにはぶっている。
男性は肉体が汚く、精神が美しい傾向がある。(気に入らない相手に肉体的攻撃を加える⇒精神的攻撃も加える男は猛者)
女は肉体が美しく、精神が汚い傾向がある。(気に入らない相手に精神的攻撃を加える⇒肉体的攻撃も加える女は猛者)
女は隠れて悪事をする。気に入らない女子を便所でボコったり、便器舐めさせたり、男の友人を使ってレイプ、仲間外れにしたり。陰口、嫉妬。
女は対人関係において、この汚い性格を隠そうとするため、外面が非常によくなる。(猫かぶり)
男性諸君は外面に騙されないように気を付けて下さい。
0017デフォルトの名無しさん
2006/03/14(火) 19:57:410018デフォルトの名無しさん
2006/03/14(火) 22:24:47読んでて泣きそうになった
どこのお宅もry
0019デフォルトの名無しさん
2006/03/14(火) 22:36:02そりゃ女なんてそんな綺麗なもんじゃないけどさ。
0020デフォルトの名無しさん
2006/03/15(水) 01:39:210021デフォルトの名無しさん
2006/03/15(水) 01:56:350022デフォルトの名無しさん
2006/03/15(水) 02:53:280023デフォルトの名無しさん
2006/03/15(水) 06:08:57現金手渡し最強。
0024デフォルトの名無しさん
2006/03/15(水) 08:27:350025デフォルトの名無しさん
2006/03/15(水) 12:04:540026デフォルトの名無しさん
2006/03/15(水) 21:54:44Cのマクロは名前渡しだよ。
呼出し側のコンテキストで引数を評価する。
0027デフォルトの名無しさん
2006/03/15(水) 22:26:20誰か分かりやすく教えてよ。
0028デフォルトの名無しさん
2006/03/16(木) 11:40:140029デフォルトの名無しさん
2006/03/16(木) 12:35:57これ以上何を。
0030デフォルトの名無しさん
2006/03/16(木) 13:29:110031デフォルトの名無しさん
2006/03/16(木) 16:13:10ByRefは、変数の入っているメモリのアドレスを渡すのでは。
0032デフォルトの名無しさん
2006/03/17(金) 10:42:31正規評価とか正規順序という言い方もする。
要するに実引数を評価せずに式をそのまま渡して、
関数呼び出しを関数本体(の仮引数を実引数に置き換えたもの)と置き換える。
例えば>>9のswapの例では
swap(i, a[i])という呼び出しは本体のx,yがi,a[i]に置き換わった上で、
本体ブロックと置き換えられるから
{
tmp = i;
i = a[i];
a[i] = tmp;
}
をそのまま評価することになる。
つまり、Cだとマクロで引数に式を渡すのと同じこと。
0033デフォルトの名無しさん
2006/03/18(土) 03:04:10BASIC -> Z80 -> FORTRAN -> C/C++ ときた俺には、参照渡しが最も軟弱だと思う
まあ、const とか [in] とかの modifier が付けられればどうでもいいのだが
0034デフォルトの名無しさん
2006/03/18(土) 15:24:41適材適所って言葉知らんのか
0035デフォルトの名無しさん
2006/03/18(土) 16:55:550036http://www.vector.co.jp/soft/win95/util/se072729.html
2006/03/18(土) 19:44:10もしくは64bitにネイティブ対応したテキスト置換ソフトありますか?
0037デフォルトの名無しさん
2006/03/18(土) 20:31:14言葉遊びの問題じゃなくて、c++とかjavaの構文でわからない事があったが
デリファレンスで検索してもperlしかひっからなくて昔困ってた
0038デフォルトの名無しさん
2006/03/18(土) 22:12:48何種類かの訳語があるようだけど、間接参照かな。
dereferenceで日本語のページを検索するといいかも
0039デフォルトの名無しさん
2006/03/18(土) 23:38:03ここにdereferenceの訳が幾つも挙げられているよ。作者は脱参照という新語を提案しているが。
http://www.fides.dti.ne.jp/~oka-t/cpplab-dereference.html
ちなみにC/C++のJIS規格書ではたしか*演算子のことを間接参照演算子と呼んでいたはず。
0040デフォルトの名無しさん
2006/03/19(日) 00:10:03ありがと
間接参照が一番メジャーっぽいか
0041デフォルトの名無しさん
2006/03/19(日) 01:11:270042デフォルトの名無しさん
2006/03/24(金) 00:47:39俺用語を増やすな
0043デフォルトの名無しさん
2006/04/04(火) 18:57:430044デフォルトの名無しさん
2006/04/07(金) 13:07:560045デフォルトの名無しさん
2006/04/07(金) 14:22:41そろそろマジレス
http://www2.alc.co.jp/ejr/index.php?word_in=deference&word_in2=reedeirrf&word_in3=zJPa7DCxJ15687987t
0046デフォルトの名無しさん
2006/05/04(木) 18:27:10すごくよくできてるサイトだね
0047デフォルトの名無しさん
2006/05/04(木) 18:55:30ググったらトップにくるとこ?
0048デフォルトの名無しさん
2006/05/04(木) 19:36:29ポインタを使うテクニックを覚えられた。感謝
0049デフォルトの名無しさん
2006/05/04(木) 20:19:550050デフォルトの名無しさん
2006/05/05(金) 00:20:320051デフォルトの名無しさん
2006/05/05(金) 00:56:09個人的には「参照脱がし」がいい。
0052デフォルトの名無しさん
2006/05/05(金) 02:25:22突き詰めると、全部同じ事を意味するんだがな。
0053デフォルトの名無しさん
2006/05/05(金) 08:34:47そういうのをミソもクソも一緒って言うんじゃないかと。
0054デフォルトの名無しさん
2006/05/05(金) 08:49:480055デフォルトの名無しさん
2006/05/05(金) 08:53:010056デフォルトの名無しさん
2006/05/05(金) 09:07:02OracleのPL/SQLにあるよね。func_name(arg2=>'value1')とか書くやつ。
引数リストの端になくても省略可能にできるから、結構便利なんだよね。
0057デフォルトの名無しさん
2006/05/05(金) 10:19:54逆参照が直感的でわかりやすい
0058デフォルトの名無しさん
2006/05/05(金) 10:44:370059デフォルトの名無しさん
2006/05/05(金) 11:03:2028でも間違ってるけどそれはただの名前つき引数
0060デフォルトの名無しさん
2006/05/05(金) 11:10:07それでも、式の書かれてるアドレスを渡してるか、式の書かれた文字列をコピーで渡してるかどっちかでしょ?
0061デフォルトの名無しさん
2006/05/05(金) 11:11:200062デフォルトの名無しさん
2006/05/05(金) 12:51:240063デフォルトの名無しさん
2006/05/05(金) 14:20:34レジスタもメモリの一種と考えたほうがスッキリしまふ
0064デフォルトの名無しさん
2006/05/05(金) 14:37:03では誰が見立てているかというと、コンパイラではない。
それが出来るのは人間でしかなく
参照とか値とかいうのは、人の頭のどっかにしか無いものなのだ。
だからこそ、参照とかポインタという概念は数という概念に比べれば厄介なのかもしれない。
0065デフォルトの名無しさん
2006/05/05(金) 22:48:57意味ねぇぇぇぇwwww
0066デフォルトの名無しさん
2006/05/06(土) 06:18:43*使った場合と&使った場合とかの理解がごっちゃ混ぜ、
挙句char*とStringクラスまで大混乱した状態で頭に入ってしまった場合w
>>45サイトは便利だけど、一通りポインタ使えるようになった後で
移行した方が良さそうだなあ
0067デフォルトの名無しさん
2006/05/06(土) 09:23:57参照もポインタも何かのアドレスを指している?
0068デフォルトの名無しさん
2006/05/06(土) 09:28:09C言語はその点 漢だな
0069デフォルトの名無しさん
2006/05/06(土) 09:29:36ポインタは参照する為の入れ物
参照というのは、その参照を隠したもの
0070デフォルトの名無しさん
2006/05/06(土) 09:42:05参照渡し→boost::call_traits<T>::reference
でおk
0071デフォルトの名無しさん
2006/05/06(土) 10:01:38ごめん、余計にこんがらがった。orz
0072デフォルトの名無しさん
2006/05/06(土) 10:18:24ポインタというのは、まあURLみたいなもんだ
そのURLで指した所にWebのページなりファイルなりがあるわけだ。
で、実体渡しというのは、自分のPCにファイルをコピーしてる状態ね。
それを参照するというのは、ファイルを置いたまま、眺めたり直接変更するような事だな。
実体を弄ってもコピーだから本体には影響しないけど、参照で触ると本体が書き換わってしまう。
参照で渡すというのは、その仕掛けを見えないようにしたもの。
まるで、自分のPCにあるかのように見せて、実際に編集も加工も出来るけど
実際は自分のPCにはコピーされてないって事
0073デフォルトの名無しさん
2006/05/06(土) 10:31:43ポインタで渡した場合と、参照で渡した場合とでは出来ることに差があるのですか?
0074デフォルトの名無しさん
2006/05/06(土) 10:52:49差は無いよ。ポインタ渡しでも参照渡しでも出来る事は同じで、ただ記述法が違うだけ。
ポインタ渡しは参照だという事が判りやすいというだけだね。
しいて上げれば、
参照でもポインタでも、読んでもいいけど書いちゃダメだよという指令が出来るけど
参照は、読めないよ、返すだけに使ってねという指示が出来る点かな
0075デフォルトの名無しさん
2006/05/06(土) 10:54:310076デフォルトの名無しさん
2006/05/06(土) 10:57:480077デフォルトの名無しさん
2006/05/06(土) 11:02:270078デフォルトの名無しさん
2006/05/06(土) 11:03:210079デフォルトの名無しさん
2006/05/06(土) 11:06:57out パラメータというのは
設定出来る言語もあるし出来ない言語もあるよ。
COMサポート容易な言語の多くは出来るね。
0080デフォルトの名無しさん
2006/05/06(土) 11:12:29了解。
ということは、基本的には>>61の言っていることでいいと?
参照渡しは実はポインタ渡しだけど、あたかも値渡しのように見せかけていると
理解していいのでしょうか?
0081デフォルトの名無しさん
2006/05/06(土) 11:12:38あC#も出来たか
0082デフォルトの名無しさん
2006/05/06(土) 11:15:08これじゃグローバル変数使うのと変わらんじゃん。
しかも、構造体にさらに構造体のポインタが含まれ、
その中にさらに構造体のポインタが含まれ、
その中にさらに・・・
なんていったらもう全変数渡してんのと変わらんね☆
渡したところで使うのはごく一部だろうが!!
0083デフォルトの名無しさん
2006/05/06(土) 11:17:07>参照渡しは実はポインタ渡しだけど、あたかも値渡しのように見せかけている
という理解でいいと思うよ。
最近の言語は、オブジェクトを参照で保持するものが多いし
代入が参照の複製だったりするから、ほんと混乱するよね
0084デフォルトの名無しさん
2006/05/06(土) 11:19:19オブジェクト型なんて、まさにそれをやってるわけで
0085デフォルトの名無しさん
2006/05/06(土) 11:23:43サンクス。
やっと理解できました。
0086デフォルトの名無しさん
2006/05/06(土) 11:51:26参照 ポインタ演算ができない
ポインタ ポインタ演算ができる
※ポインタ演算が不要なら参照がお勧め
参照 アドレスの比較をするために & を使わなければならない
ポインタ そのまま比較できる
※NULL を渡したり返したりするならポインタがお勧め
0087デフォルトの名無しさん
2006/05/06(土) 13:11:00optional使え。
0088デフォルトの名無しさん
2006/05/06(土) 19:46:30何気に参照型も受け付けるのは驚いた。
0089デフォルトの名無しさん
2006/05/07(日) 14:19:33ポインタ演算は、イテレータや参照の配列で
同じことやさらに高度なことが出来る。
0090デフォルトの名無しさん
2006/05/07(日) 15:49:50┣2つ目以降の返値の代用(→boost::tupple)
┣配列(→各種iterator)
┣省略可能(→boost::optional)
┣渡したオブジェクトの状態を変化させる(→参照)
┗外部ライブラリから返ってくるハンドル(→ラップしる!)
という風に、C++ではポインタ同様にポインタ渡しも排除できると思う。
0091デフォルトの名無しさん
2006/05/07(日) 17:21:49一般的な参照で話す人とで齟齬が生じるんだよな
0092デフォルトの名無しさん
2006/05/07(日) 18:04:07結局はビットフィールドコピーしてるんだから値渡しだ!ってゆってた
0093デフォルトの名無しさん
2006/05/07(日) 19:44:140094デフォルトの名無しさん
2006/05/07(日) 19:45:070095デフォルトの名無しさん
2006/05/07(日) 20:25:02二進数だ!
0096デフォルトの名無しさん
2006/05/07(日) 22:03:39C++の参照渡しはコピーコンストラクタや演算子のオーバーロードのために存在する。
特に、コピーコンストラクタは参照渡しで定義しないと自動的に無限ループだからね。
個人的には、これら以外では参照渡しよりもポインタ渡しを推奨するなあ。
ソースを書いてるときはポインタ渡しの方がタイプ量が若干増えるけど、
後からソースを見たときに、実際に渡しているのが何なのかが
パッと見て区別できるのは結構大きい。
特に「ポインタ不要論」で紹介されている、データの返し先引数として
参照を使うってのは、俺的には最悪。
例えばf(a,b,c,d,e)の呼び出しだけ見てa・b・cは値を渡すだけで
d・eには値が帰ってくるかもしれない、なんてパッと見で分かる奴なぞ
だれもいないだろう。
ポインタにすれば、printf("%d",a)とscanf("%d",&a)の例のように
前者はaを書き換えない、後者はaを書き換える(かもしれない)ってのが
一目瞭然。
0097デフォルトの名無しさん
2006/05/07(日) 22:49:21その理屈だと、巨大なオブジェクトや構造体も値渡しということになってしまう。
かといって、ポインタ渡ししたくても書き換える可能性ありと思われてしまうことになる。
結論:適材適所。他人に公開する関数はI/Fの記述を忘れずに。
0098デフォルトの名無しさん
2006/05/07(日) 22:54:22std::string s;
std::getline(std::cin, s);
使ったときは大抵こういう風に直前に変数宣言があって、
明らかにgetlineの中でsに何か書かれるに違いないという感じになる。
それにそう何個も返したければ戻り値クラス・構造体にまとめるし。
0099デフォルトの名無しさん
2006/05/07(日) 23:42:07行き→&無し
帰り→&あり
で統一するなら。
まー漏れはtupple使うがなー
0100デフォルトの名無しさん
2006/05/08(月) 11:49:31>C++の参照渡しはコピーコンストラクタや演算子のオーバーロードのために存在する。
デタラメを吹聴しないように。
>ポインタにすれば、printf("%d",a)とscanf("%d",&a)の例のように
char s[] = "1234";
myfunc("%s", s);
*s を書き換えるかどうか、お前には想像がつくとでも?
それは、ポインタか参照か、という問題ではない。
ポインタ/参照を受け取る関数が、その内容を
書き換えるかどうかは、const として宣言されているか
どうかで判断するしかない。
0101デフォルトの名無しさん
2006/05/08(月) 18:46:16D&Eには「主に、演算子のオーバーロードをサポートするために導入した」と書かれている。
だからと言って俺はこれっぽっちもそれ以外の用途で非const参照を使うべきではないと思っていないけどね。
0102デフォルトの名無しさん
2006/05/09(火) 16:01:15概念としては値渡しと参照渡ししかない。
(名前渡しはちょっと複雑な参照渡し)
実装としては値渡ししかない。
(スタックで渡すか固定アドレスで渡すかレジスタで渡すか等の違いはある)
Cのポインタ渡しはプログラマが、C++等の参照渡しはコンパイラが
値渡しを使って擬似的に参照渡しを行っているだけ。
0103デフォルトの名無しさん
2006/05/09(火) 22:44:12概念と実装がごっちゃでないのか?
0104102
2006/05/09(火) 23:12:30値渡しを用いて参照渡しを実装している、というべきだったかな。
0105デフォルトの名無しさん
2006/05/10(水) 02:42:53push dword ptr[ebp-04]
call func1
■参照渡し func2(i)
lea eax,[ebp-04]
push eax
call func2
■ポインタ渡し func3(&i)
lea eax,[ebp-04]
push eax
call func3
0106デフォルトの名無しさん
2006/05/11(木) 14:11:04お、参照とポインタ渡しはコンパイル結果が同じだね?
0107デフォルトの名無しさん
2006/05/11(木) 18:22:03push dword ptr[ebp-04]
call func1
■参照渡し func2(i)
lea eax,[ebp-04]
push eax
call func2
■ポインタ渡し func3(&i)
lea eax,[ebp-04]
push eax
call func3
■ポインタ渡し func4(i)
push dword ptr[ebp-04]
call func4
0108デフォルトの名無しさん
2006/05/12(金) 09:06:52コンパイル後が違ったり同じだったりするところが
面白いというかイヤらしいというか。
0109デフォルトの名無しさん
2006/05/12(金) 12:49:12当たり前だろう。
0110デフォルトの名無しさん
2006/05/12(金) 12:53:13func2(i)とfunc3(&i)ってeaxに一度アドレス入れてるのって何か無駄じゃない?
0111110
2006/05/12(金) 12:55:330112デフォルトの名無しさん
2006/05/12(金) 18:00:050113デフォルトの名無しさん
2006/05/17(水) 10:51:16template <class T> struct named_arg {
virtual T operator() () = 0;
named_plus<T> operator+ (const named_arg<T>& t1) {
return named_plus<T>(*this, t1);
}
//以下演算子をオーバーロードしまくり
};
template <class T> class named_plus : named_arg<T> {
const named_arg<T>& _t1, _t2;
public:
named_plus(const named_arg<T>& t1, const named_arg<T>& t2>)
: _t1(t1), _t2(t2) {}
T operator() () { return _t1() + _t2(); }
};
template <class T> class named_element : named_arg<T&> {
T& _tref;
public:
named_element(T& tref) : _tref(tref) {}
T& operator() () { return _tref; }
};
…何に使うんだ?
0114デフォルトの名無しさん
2006/05/18(木) 01:37:550115デフォルトの名無しさん
2006/08/16(水) 01:03:55例
test1(int& a){ //参照渡し
a = 1;
}
test2(int* a){ //ポインタ渡し
*a = 1;
}
test1(a);
test2(&a); //結果は同じだが、書き方が2種類でミスがでる
要はポインタ表記を絶滅させること。これでヌルポもなくなる。
あと文字列はstd::stringとかCStringでもいい
配列はvectorでnew、deleteもなくなってメモリリークもなくなる
0116デフォルトの名無しさん
2006/08/16(水) 10:44:19つまり、巨大な単体オブジェクトも常にローカルに配置しろと言うことですね?
或いはレガシーなAPIとのI/Fを捨てると言うことですね?
0117デフォルトの名無しさん
2006/08/16(水) 12:49:23本筋には賛成するが、Javaがそうだからというのは違和感を感じる。
C++の参照は後から参照先を変えられないが、Javaの参照ではできる。
その点ではポインタの方が近い。
>>116
どっちもラッピングすればいいと思う。
特に前者に関してはこういう話も。
http://d.hatena.ne.jp/Cryolite/20060622
0118デフォルトの名無しさん
2006/08/24(木) 22:57:36int procA()
{
printf("Hello World!\n");
return 0;
}
int main(int argc, char* argv[])
{
int (*funcptr)()=procA;
(*&*&*&****&**&*******&*&*&*&***&***&***&**&***&**&***&*&**procA)();
(*&*&*&****&**&*****&*&***&*&**procA)();
return 0;
}
0119デフォルトの名無しさん
2006/08/24(木) 22:58:42int procA()
{
printf("Hello World!\n");
return 0;
}
int main(int argc, char* argv[])
{
int (*funcptr)()=procA;
(*&*&*&****&**&*****&*&***&*&**funcptr)();
(*&*&*&****&**&*******&*&*&*&***&***&***&**&***&**&***&*&**procA)();
return 0;
}
0120デフォルトの名無しさん
2006/08/28(月) 17:23:460121デフォルトの名無しさん
2006/09/05(火) 05:07:28昔まじめに
int********** GetHoge();
みたいな関数見たことあるよw
一瞬何の言語かと思った
0122デフォルトの名無しさん
2006/09/05(火) 23:55:56ま、糞だな
0123デフォルトの名無しさん
2006/09/16(土) 19:50:310124デフォルトの名無しさん
2006/09/25(月) 09:41:03メモリ足りんのか?
0125デフォルトの名無しさん
2006/10/29(日) 23:05:24> ...
> だからユーザからはポインタの自由を取り上げるべきだ。
0126デフォルトの名無しさん
2006/10/30(月) 00:48:06ユーザーにはプログラム自体見せるなよw
0127デフォルトの名無しさん
2006/10/30(月) 00:58:130128デフォルトの名無しさん
2006/10/30(月) 08:55:25その言語のページは無いの? ひどく検索しづらいんだけど。
0129デフォルトの名無しさん
2006/10/30(月) 09:09:13ttp://homepage3.nifty.com/mogami/lang/index.html
0130デフォルトの名無しさん
2006/10/31(火) 01:58:26面白そうかも
0131デフォルトの名無しさん
2006/11/26(日) 16:10:22演算される可能性が無いので処理系によってはマクロ展開のように呼び出しもとの変数
そのものに差し替えられる可能性がある。また、ポインタの場合は演算される可能性が
あるので大抵一時変数が確保される。尤も、参照渡しの最たる所はテンプレートで既存
の型と演算子をオーバーロードされたクラスが同居できる点にあるが…。
0132デフォルトの名無しさん
2006/11/26(日) 16:41:52今時のコンパイラはインライン展開できる状況ならポインタでもconst修飾されていれば参照と同じようなコードになるよ。
0133デフォルトの名無しさん
2006/11/29(水) 01:40:52所詮は相対アドレスだし、デバッガも充実してるからね。
自分にはperlやJavaScriptのほうがヤダ。
特にデバッガを通すと挙動が変わるperlには殺意を覚える。
■ このスレッドは過去ログ倉庫に格納されています