[C++]课题笔记20190716

static の使い方

書く場所

  • グローバル変数の位置

{}に囲まれていないところ

static int anpan;//そのファイル内でのみ有効
extern int anpan;//extern別のファイルで参照する場合extern同じ変数宣言(そとにあるよ)
[extern](https://www.cnblogs.com/yc_sunniwell/archive/2010/07/14/1777431.html)
enemy.h
#ifdef ENEMY
int anpan;
#else
extern int anpan
#endif

staticはファイルごとに別の関数扱い

関数内のstatic

static領域で変数確報、関数終わったときずっとstatic領域内残り続ける

クラス内で書いた場合

class Mosnter
{
public: 
	int HP;//インスタンスごとにとられる
	static int kazu;//クラスについて一個だけスタティック領域にとられる
}

kadai

#include
using namespace std;

class Monster 
{
public:
	int HP;
	static int kazu;
	Monster()
	{
		kazu++;
	}
	~Monster()
	{
		kazu--;
	}

};
int Monster::kazu = 0;
int main()
{
	Monster anpanman;


	cout << anpanman.kazu << endl;
	Monster nakagomi;
	
	cout << nakagomi.kazu << endl;

	cin.get();
	return 0;
}

クラス内の関数につける
インスタンスなくても呼べる
Soundよく使われてる
static関数内で扱えるのはstaticつけたのみ(static関数やstatic変数)

Getter/Setterの話

//Setter
class Monster
{
	int hp;
public:
	void SetHP(int n)
	{
		hp=n;
	}
}

//Getter
int GetHP()
{
	return hp;
}

int main()
{
	Monster Gomi;
	Gomi.SetHP(10);
	
}

void Hp(int n)
{
	hp=n;
}
int Hp()
{
	return hp;
}

作为程序员会有很吵的前辈和全都public就行的前辈(
関門

你可能感兴趣的:(C++)