728x90
*<์น์ด๋จน๋ C++>์ ๋ณด๋ฉฐ ๊ณต๋ถํ์ฌ ์ ๋ฆฌํ ๊ธ์ ๋๋ค.
์ค๋๋ ์ด์ฌํ ์ฐ๋ฆฌ์ ์ดํด๋ฅผ ๋์์ค ๋ชฌ์คํฐ(Monster) ํด๋์ค!
#include <iostream>
#include <string>
class Monster {
private:
std::string name;
int health;
int damage;
static int totalMonsterNum;
public:
Monster() = default;
Monster(std::string name, int health, int damage);
};
์ด๊ธฐํ ๋ฆฌ์คํธ๋ฅผ ์ฌ์ฉํ์ง ์์ ์ผ๋ฐ์ ์ธ ์์ฑ์
Monster::Monster(std::string name, int health, int damage) {
this->name = name;
this->health = health;
this->damage = damage;
}
- ์์ฑ์๋ ๊ฐ์ฒด ์์ฑ์ ๋จผ์ ํ ํ, ๊ทธ ๋ค์์ ๋์ ์ฐ์ฐ์ ์ํ
- ๊ฐ์ฒด ์์ฑ ํ์ ๋์ ์ด ์ด๋ฃจ์ด์ง๊ธฐ ๋๋ฌธ์ ์ด๊ธฐํ ๋ฆฌ์คํธ๋ณด๋ค ์๋๊ฐ ๋๋ฆฌ๋ค.
- ์ฐธ์กฐ(Reference)์ ์์๋ ์์ฑ๊ณผ ๋์์ ์ด๊ธฐํ๋ฅผ ํด์ฃผ์ด์ผ ํ๊ธฐ ๋๋ฌธ์ ์์ ๊ฐ์ ๋ฐฉ๋ฒ์ ์ค๋ฅ๊ฐ ๋ ์ ์๋ค.
- ๊ทธ๋ ๊ธฐ์ ํด๋์ค ๋ด๋ถ์์ ์ฐธ์กฐ๋ ์์๋ฅผ ๋ฃ๊ณ ์ถ๋ค๋ฉด, ์ด๊ธฐํ ๋ฆฌ์คํธ๋ฅผ ํตํด ์์ฑ์๋ฅผ ๋ง๋ค์ด์ค์ผ ํ๋ค.
์ด๊ธฐํ ๋ฆฌ์คํธ๋ฅผ ์ฌ์ฉํ ์์ฑ์
Monster::Monster(std::string name, int health, int damage) :
name(name), health(health), damage(damage) {}
- ์์ฑ๊ณผ ๋์์ ์ด๊ธฐํ๋ฅผ ์งํํ๊ธฐ์ ์๋๊ฐ ๋ ๋น ๋ฅด๋ค.
- ์์ฑ์ ํจ์ ๋ด๋ถ๋ ๋น์ด์๊ณ , ๋ฉค๋ฒ ๋ณ์๋ฅผ ์ง์นญํด์ ๊ดํธ ์์ ๋ณ์๋ ๋ฐ์ดํฐ๋ก ์ด๊ธฐํํด์ฃผ๋ ๊ฒ์ด ํน์ง
- ๋ฉค๋ฒ ๋ณ์์ ๋งค๊ฐ๋ณ์์ ์ด๋ฆ์ด ๊ฐ์๋ ๋๋ค. (์ธ๋ถ์ ์๋ ๋ณ์๋ "๋ฉค๋ฒ ๋ณ์"๋ฅผ, ๊ดํธ ์์ ๋ณ์๋ "๋งค๊ฐ๋ณ์"๋ฅผ ์ฐ์ ์ ์ผ๋ก ์ง์นญํ๋๋ก ๋์ด ์๊ธฐ ๋๋ฌธ. ๋ฐ๋ผ์, this ํค์๋๊ฐ ํ์ ์๋ค.)
ํด๋์ค Static ๋ฉค๋ฒ ๋ณ์ ๋ฐ ํจ์
- ๊ฐ์ฒด๊ฐ ์๋ฉธ๋ ๋ ์ฌ๋ผ์ง๋ ๊ฒ์ด ์๋๋ผ, ํ๋ก๊ทธ๋จ์ด ์ข ๋ฃ๋ ๋ ์๋ฉธํ๋ค.
- Static ๋ฉค๋ฒ ๋ณ์๋ ํด๋์ค์ ๋ชจ๋ ๊ฐ์ฒด๋ค์ด ๊ณต์ ํ๋ ํ ๊ฐ์ ๋ณ์๋ค.
- Static ๋ฉค๋ฒ ๋ณ์ ๋ฐ ํจ์์ ๋ํ ์ ๊ทผ์ ํด๋์ค์ ๋ฒ์์ง์ ์ฐ์ฐ์(::)๋ฅผ ์ฌ์ฉํ๋ค.
- ๋ค์๊ณผ ๊ฐ์ด Static ๋ฉค๋ฒ ๋ณ์๋ฅผ ์ด๊ธฐํํ๋ค.
class Monster {
static int totalMonsterNum; // ์๋์ผ๋ก 0์ด ํ ๋น๋๋ค.
...
};
int Monster::totalMonsterNum = 10; // static ๋ฉค๋ฒ ๋ณ์ ์ด๊ธฐํ
- ํด๋์ค ๋ด๋ถ์์ Static ๋ฉค๋ฒ ๋ณ์๋ฅผ ์ด๊ธฐํํ๋ ค๋ฉด const static ๋ณ์์ผ ๋๋ง ๊ฐ๋ฅํ๋ค.
class Monster {
const static int totalMonsterNum = 10;
...
};
- Static ๋ฉค๋ฒ ํจ์๋ ํน์ ๊ฐ์ฒด์ ์ข ์๋๋ ๊ฒ์ด ์๋, ํด๋์ค ์ ์ฒด์ ์กด์ฌํ๋ ํ ๊ฐ์ ํจ์๋ค.
- Static ํจ์ ๋ด์์๋ static ๋ณ์๋ง ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค. (์ด๋ค ๊ฐ์ฒด์ ์์ ๋ณ์์ธ์ง ํ์ธ์ด ๋ถ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ)
- Static ํจ์ ๋ด์์ ์๋ก์ด ์ผ๋ฐ ๋ณ์๋ ๊ฐ์ฒด๋ฅผ ์์ฑํด์ ๋ฆฌํดํ๋ ๊ฒ์ ๊ฐ๋ฅํ๋ค.
class Monster {
private:
int hp;
static int damage;
public:
static void Show();
};
void Monster::Show() {
std::cout << "Static ํจ์ ํธ์ถ" << std::endl;
// hp = 10; ์ผ๋ฐ ๋ณ์ ์ฌ์ฉ ๋ถ๊ฐ
damage = 10;
}
int main() {
Monster::Show(); // ๊ฐ์ฒด ์์ฑ์์ด ํด๋์ค์ ๋ฐ๋ก ์ ๊ทผํ์ฌ ํธ์ถ
return 0;
}
728x90
๋ฐ์ํ
'๐ฏ๏ธLanguage > C++' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[C++] Const ํค์๋์ ๋ํด (0) | 2022.02.09 |
---|---|
[C++] ์ฐธ์กฐ ๋ฆฌํด ํจ์ (0) | 2022.02.09 |
[C++] ๋ณต์ฌ ์์ฑ์(Copy constructor), ์์ ๋ณต์ฌ(Shallow Copy), ๊น์ ๋ณต์ฌ(Deep Copy) (0) | 2022.02.09 |
[C++] ์์ฑ์(Default Constructor) ์ฌ์ฉ ์ ์ฃผ์์ฌํญ (0) | 2022.02.08 |
[C++] C++ ์ปดํ์ผ๋ฌ์์ ํจ์๋ฅผ ์ค๋ฒ๋ก๋ฉ(Overloading)ํ๋ ๊ณผ์ (0) | 2022.02.08 |