TMK

WindowsMobile5は言うこと聞かないね

目次

Blog 利用状況

ニュース

参加コミュニティ

書庫

日記カテゴリ

[C++] いまさらですけど

えーと、ごめんなさい。
「今更かよ!」というものを晒します。笑ってあげてください。プギャーも可。

class A{};
class B : public A{};

B object_b;
A* p_object_a = &object_b; // これは問題なし

A& ref_object_a = object_b; // じゃあこれは?

2つめ(参照で受ける方)、出来ないと思っていました。
# 別の言い方をすると、ポインタのみだと思い込んでいました。

もちろん、仮想関数があれば期待通りにディスパッチされます(B::function)。

・・・えーと・・・お詫びに鼻毛を1本抜きます。m_ _m

投稿日時 : 2007年10月17日 16:15

コメントを追加

# re: [C++] いまさらですけど 2007/10/17 16:31 774RR

こんなソース見ました。まったくもってダメです。
でも初心者君がなかなかわかってくれません。どう説明しまひょ。

foo() {
B b[100];
bar(b, 100);
}

void bar(A* p, int n) {
for (int i=0; i<n; ++i, ++p) { ... }
}

# re: [C++] いまさらですけど 2007/10/17 16:48 επιστημη

> A& ref_object_a = object_b; // じゃあこれは?

void f(A&);

B object_b;
f(object_b);

↑これができるんだからできますわねぇ。

# re: [C++] いまさらですけど 2007/10/17 16:56 囚人

>でも初心者君がなかなかわかってくれません。どう説明しまひょ。

まずは、
「配列とポリモーフィックは合わんのよねぇ~。水と油、ウナギと梅干」
で。

詳しく聞きたいと言われたら


bar は A しか知らんだろ?
で、bar 内で配列内を移動する。
bar は A の事しか知らないから、移動するのはあくまで A のサイズだ。
でも、実際は B だから、移動しても届かないわけね。
んで、ドッカーン


みたいな。

# re: [C++] いまさらですけど 2007/10/17 17:07 επιστημη

↓今風にあれんぢ

template<typename Iterator>
void bar(Iterator first, Iterator last) {
 while ( first != last ) {
  first->うにゃうにゃ();
  ...
  ++first;
 }
}

B b[100];
bar(b, b+100);

# re: [C++] いまさらですけど 2007/10/17 18:17 刈歩 菜良

つ 俺流メモリー図
(^^)v

# re: [C++] いまさらですけど 2007/10/17 19:07 とっちゃん

じゃぁおいらも暴露w

その昔、& を覚えたばかりのころはおいらも同じでしたw

間違って、ベースクラスのところに渡したら動いたので、なんだ、使えるんだ!って思ったのは...
一つご内密にお願いしますw

ずいぶんと昔の話ですがねw
#まだ、65536 という数字には多大なコストがかかった時代の話ですwww<いつ!

# re: [C++] いまさらですけど 2007/10/17 19:23 ddnp

こんなおバカにコメントいただきありがとうござますm_ _m

>>774RR さん
戻りの型がありません!(え、問題はそこじゃない?w

これは、もう『詰み』ですかね?
インターフェイスを維持しつつ、これをうまいこと
走らせる方法は・・・
void bar(virtual A* p, int n); みたいな。無いか。うーむ

>>囚人さん
突っ込んだ説明のほう、
MoreEffectiveC++だ。そうだ。そうでした。
まさにそういったことが書いていました。
説明うまいですね。おみそれしますた。

>>επιστημη さん
iteratorでC++の世界が広がります。1234567890
<font size+2>iteratorでC++の世界が広がります。1234567890</font>
<font size+4>iteratorでC++の世界が広がります。1234567890</font>
スマートで洗練された解法。おみそれしまくりました。

>>かるぼさん
ごめんなさい、それ食べられますか??w

# re: [C++] いまさらですけど 2007/10/17 20:29 ddnp

>>とっ・・・ちゃん
覚えたばかりじゃないけど、同じ事して見つけました。
・・・「なんだ、使えるんだ!」

>#まだ、65536 という数字には多大なコスト
えー・・・Windowsでいうと3.1、16ビットの頃ですね!?

全然関係ないけども、ひーいとびと~のHitBitは
何ビットで動いてたんでしょう。やっぱり8かしら
#いかん、また懐古虫が・・・

# re: [C++] いまさらですけど 2007/10/18 9:03 Mr.T

Mr.Tです、こんにちは。
>ひーいとびと~のHitBit
...ん...ん??
やべ、形とか色とか全く思い出せないのに、CMのそこ(音声)だけが脳内に蘇ったwww
#TV CMおそるべし。

# re: [C++] いまさらですけど 2007/10/18 11:59 とっちゃん

HitBit は8ですね。
MSXのころ...あれ?MSXじゃなかったかな?
よくわかんねーやw

#MSXは横目に見つつ、あれだったらファミコンのほうがいいやと思ってた人なのでw

タイトル
名前
URL
コメント