文脈でキモさはかわるだろう

  • >とか&とか*とかが出てきてもそれがC++ならなんか許せた。

Perlで出てきたときはキモすぎて拒絶反応が出たのだけれど
それは「スクリプト書くぜぇ!、イージーに書くぜぇ!テンポラリなものかくぜぇ!」な気分と
ポインタのキモさとがバランスとれなかったからなんだろなぁと今になっておもう。

#include <iostream.h>

class Foo{
public:
  void function(){cout << "Foo::function() is running..." << endl;}
};

int main(){
  Foo foo;//Foo型の変数(インスタンス)
  Foo *pfoo;//Foo型のポインタ変数
  *pfoo = &foo;//インスタンスを作ったfooへの先頭アドレスを&で取得してFoo型のポインタ変数に格納
  
  pfoo->function();//ポインタ経由でメソッドをキック。ポインタはFoo型なのでfuncion()がある場所についてはわかってる!

  return 0;
}

なんかすっとした。


追記 2009/05/07 17:43

さて、赤面ものの間違いだったわけだが


穴ないすかアナ!

#include <iostream>

using namespace std;

class Foo{
public:
	Foo(){i = 0;}
	void function(){cout << "Foo::function() is running..." << (i++) << endl;}
private:
	int i;
};

int main(){
  Foo foo;//Foo型の変数(インスタンス)
  Foo* pfoo;//Foo型のポインタ変数
  pfoo = &foo;//インスタンスを作ったfooへの先頭アドレスを&で取得してFoo型のポインタ変数に格納
  Foo** ppfoo;//ポインタのポインタとか。てへっ!
  ppfoo = &pfoo;//代入。てへっ
  (*ppfoo)->function();
  pfoo->function();//ポインタ経由でメソッドをキック。ポインタはFoo型なのでfuncion()がある場所についてはわかってる!

  while(1){;}
  return 0;
}

うわっ。

    *pfoo = &foo;//インスタンスを作ったfooへの先頭アドレスを&で取得してFoo型のポインタ変数に格納

あああああああ
きついわぁ。
うわ、さぶっ。
まぁ、また一つ大人になりましたね。
はずかしいーーー
どうも世の中には関数ポインタというものがあるらしい。にやにや。
いやはや。羞恥プレイの癖がつきそうです。