好き勝手に・げーあにん?

ファミコンと同い年の社会人ヌルオタの日記

メンバ関数ポインタの文法でちょくちょくハマル

メンバ関数ポインタを扱う時、& を付け忘れてたまにはまる。

クラス関数なら & いらないのに!と思ったら、付けても同じ結果になった。イミフ><

そういう文法なんだな、でいい事にしてたけど、やっぱり腑に落ちないんだよなー。

#include <stdio.h>

class A
{
public:
    static int static_func() {return 100;}
    int instance_method() const {return 300;}
};

int main()
{
    int (*func)() = A::static_func;
    int (*func2)() = &A::static_func; // これでも同じだったのか...
    int (A::*method)() const = &A::instance_method;

    A a;
    printf("%d\n", (a.*method)());
    printf("%d\n", func());
    printf("%d\n", func2());

    return 0;
}

また C++ を基礎から勉強しようかなー。春になるし(?)。と、id:higepon さんの即時実行っぷり*1をみて思ったのであった。私は有言不実行です(最悪だ)。