そこで最近、見たことのない特定のテクニック (イディオム?) を使用したソース コードを見つけました。簡単に言えば; 問題のクラスに静的変数を使用する代わりに、クラスのソース ファイル内でローカル変数を使用していました。
myclass.h
class myclass {
//static int myint;
public:
myclass();
~myclass();
int count();
};
myclass.cpp
#include "myclass.h"
int myint = 0;
myclass::myclass() {
myint++;
}
myclass::~myclass() {
myint--;
}
int myclass::count() {
return myint;
}
main.cpp
#include "myclass.h"
#include <iostream>
int main() {
myclass aclass;
myclass theclass;
std::cout << theclass.count(); //outputs 2
return 0;
}
私の質問は、なぜ誰かが静的変数を使用してこのアプローチを採用するのでしょうか?
私の見解では、理想的には、変数は myclass クラス (private static) だけが認識し、継承はまったく重要ではないため (この場合)、他の人がこの変数について知ることができなくなる可能性があります。しかし、それが私が見ることができる唯一の利点です。それがそれを正当化するかどうかはわかりません。
プライベートな (静的/非静的) メンバー関数についても同じことが言えます。継承が重要でない場合。
EDIT:周りを読んだ後、一部の人々がまだCプログラミングスタイルを使用しているためだと突き刺します...