静的メンバ関数

http://www.geocities.jp/ky_webid/cpp/language/019.html

前回の静的メンバ変数と同様、単なるクラス内関数ですね。

また、いつでも呼び出せる関数だという制限上、そのクラスの静的でない(普通の)メンバ関数へのアクセスができません。

さらにthisポインタも使えません。なんせインスタンス化せずとも使える関数なのでCSample::foo()のように直接呼ばれた場合にthisの扱いが不明になるからです。

#include <iostream>
using namespace std;

class CSample {
public:
    static void foo ();
};

void CSample::foo () {
    cout << "CSample::foo" << endl;
}

int main () {
    CSample obj;
    
    obj.foo();
    CSample::foo();
    
    return 0;
}
$ main
CSample::foo
CSample::foo

しかし、名前空間だけの理由で静的メンバ関数を用意するのならnamespaceを使ったほうが安全です。