์ฐ๊ด์๋ ๋ฐ์ดํฐ๋ฅผ ํ๋๋ก ๋ฌถ์ผ๋ฉด ํ๋ก๊ทธ๋จ์ ๊ตฌํ ๋ฐ ๊ด๋ฆฌ๊ฐ ์ฉ์ดํ๋ค.
๐ ๊ตฌ์กฐ์ฒด๋ ์ฐ๊ด์๋ ๋ฐ์ดํฐ๋ฅผ ํ๋๋ก ๋ฌถ๋ ๋ฌธ๋ฒ์ ์ฅ์น
์ฐ๊ด์๋ ๋ฐ์ดํฐ๋ค์ ์์ฑ ๋ฐ ์๋ฉธ์ ์์ ์ด ์ผ์นํ๊ณ , ์ด๋ ๋ฐ ์ ๋ฌ์ ์์ , ๋ฐฉ๋ฒ์ด ์ผ์นํ๊ธฐ ๋๋ฌธ์ ํ๋์ ์๋ฃํ์ผ๋ก ๋ฌถ์ด์ ๊ด๋ฆฌํ๋ ๊ฒ์ด ์ฉ์ดํ๋ค.
struct Car{
char gamerID[ID_LEN];
int fuelGauge;
int curSpeed;
};
๐ฉ ๊ตฌ์กฐ์ฒด ๋ณ์ ์ ์ธ, ์์ฑ
// ๊ตฌ์กฐ์ฒด ์ ์ธ
Car basicCar; // cf. struct Car basicCar;
// ๊ตฌ์กฐ์ฒด ์์ฑ
Car run99 = {"run99", 100, 0};
struct ํค์๋์ ์๋ต์ ์ํ typedef ์ ์ธ ๋ถํ์
๊ตฌ์กฐ์ฒด ๋ณ์๋ง๋ค ํจ์๊ฐ ๋ ๋ฆฝ์ ์ผ๋ก ์กด์ฌํ๋ ๊ตฌ์กฐ๋ ์๋์ง๋ง, ๋ ผ๋ฆฌ์ ์ผ๋ก ์กด์ฌํ๋ ํํ๋ก ๋ณด์๋ ๋ฌธ์ ์๋ค.
๐ฉ ๊ตฌ์กฐ์ฒด ๋ด ํจ์
๋ฐ์ดํฐ ๋ฟ ์๋๋ผ, ํด๋น ๋ฐ์ดํฐ์ ์ฐ๊ด๋ ํจ์๋ค๋ ํจ๊ป ๊ทธ๋ฃน์ ํ์ฑํ๊ธฐ ๋๋ฌธ์ ํจ์๋ ํ๋๋ก ๋ฌถ๋ ๊ฒ์๋ํด ๋๋ฆ์ ๊ฐ์น ๋ถ์ฌ๊ฐ ๊ฐ๋ฅํ๋ค.
ํจ๊ป ์ ์ธ๋ ๋ณ์์๋ ์ง์ ์ ๊ทผ ๊ฐ๋ฅํ๋ค.
void ShowCarState(const Car& car){
}
void Accel(Car &car){
if(curSpeed < 10){
curSpeed = 0;
return;
}
}
๊ตฌ์กฐ์ฒด ๋ด ํจ์๋ฅผ ์ธ๋ถ๋ก ๋บ ์ ์๋ค.
struct Car {
void ShowCarState(){}
void Accel (Car &car){}
} // ๊ตฌ์กฐ์ฒด ๋ด ํจ์ ์ ์ธ
void Car::ShowCarState(){
}
void Car::Accel(Car &car){
} // ๊ตฌ์กฐ์ฒด ๋ด ์ ์ธ๋ ํจ์์ ์ ์
๊ตฌ์กฐ์ฒด ์์ ์ ์๋ ํจ์๋ inline ์ ์ธ๋ ๊ฒ์ผ๋ก ๊ฐ์ฃผํ๋ค.
๋ฐ๋ผ์, ํ์ํ๋ค๋ฉด, ํจ์์ ์ ์๋ฅผ ์ธ๋ถ๋ก ๋บ ๋์๋ ๋ค์๊ณผ ๊ฐ์ด ๋ช ์์ ์ผ๋ก inline ์ ์ธ์ ํด์ผ ํ๋ค.
inline void Car::ShowCarState(){}
๐ฉ enum ์์ ์ ์ธ ๋ฐฉ๋ฒ 3๊ฐ์ง
ํด๋์ค๋ฅผ ์ํด ์ ์๋ ์์
์ฐ๊ด์๋ ์์๋ค์ ํ๋์ ์ด๋ฆ๊ณต๊ฐ์ ๋ณ๋๋ก ๋ฌถ๋ ๋ฐฉ๋ฒ
๊ตฌ์กฐ์ฒด ์์ enum ์ ์ธ์ ํ์ฌ ์๋ชป๋ ์ธ๋ถ ์ ๊ทผ์ ์ ํ ๊ฐ๋ฅ
// ๋ฐฉ๋ฒ1 ํค๋ํจ์ ํ์ฉ
#define ID_LEN 20
#define MAX_SPD 200
#define FUEL_STEP 2
// ๋ฐฉ๋ฒ2 namespace ๋ด enum ํ์ฉ
namespace CAR_CONST {
enum {
ID_LEN = 20,
MAX_SPD = 200,
FUEL_STEP = 2
}
}
// ๋ฐฉ๋ฒ3 ๊ตฌ์กฐ์ฒด ๋ด enum ํ์ฉ
struct Car {
enum {
ID_LEN = 20,
MAX_SPD = 200,
FUEL_STEP = 2
};
char gamerID[ID_LEN];
}
๐ฉ ํด๋์ค์ ๊ตฌ์กฐ์ฒด์ ์ฐจ์ด์
ํค์๋ struct๋ฅผ ๋์ ํด์ class๋ฅผ ์ฌ์ฉํ๋ ๊ฑฐ์์ด ์ ์ผํ ์ธํฅ์ ์ฐจ์ด์
๋จ, ๋จ์ํ ํค์๋๋ง class๋ก ๋ฐ๊พธ๋ฉด ์ ์ธ๋ ๋ฉค๋ฒ์ ์ ๊ทผ์ด ๋ถ๊ฐ๋ฅํ๋ค. ๋ฐ๋ผ์ ๋ณ๋์ ์ ๊ทผ์ ์ด์ ๊ด๋ จ๋ ์ ์ธ์ ์ถ๊ฐํด์ผ ํ๋ค.
๐ฉ ์ ๊ทผ์ ์ด ์ง์์
public : ์ด๋์๋ ์ ๊ทผ ํ์ฉ
private : ํด๋์ค ๋ด(ํด๋์ค ๋ด์ ์ ์๋ ํจ์)์์๋ง ์ ๊ทผ ํ์ฉ
protected : ์์๊ด๊ณ์ ๋์ฌ์์ ๋, ์ ๋ ํด๋์ค์์์ ์ ๊ทผ ํ์ฉ
class Car {
private:
char gamerID[CAR_CONST::ID_LEN];
int fuelGauge;
int curSpeed;
public:
void InitMembers(char *ID, int fuel);
void ShowCarState();
void Accel();
void Break();
};
int main(void) {
Car run99;
run99.InitMembers("run99", 100);
run99.Accel();
run99.ShowCarState();
return 0;
}
Car์ ๋ฉค๋ฒํจ์๋ ๋ชจ๋ public์ด๋ฏ๋ก ํด๋์ค์ ์ธ๋ถ์ ํด๋นํ๋ main ํจ์์์ ์ ๊ทผ ๊ฐ๋ฅ
Car ํด๋์ค๋ฅผ ๋์์ผ๋ก ์ ์ธ๋ ๋ณ์ = ๊ฐ์ฒด Car run99
Car ํด๋์ค ๋ด์ ์ ์ธ๋ ๋ณ์/ํจ์ = ๋ฉค๋ฒ ๋ณ์/ํจ์
ํด๋์ค์ ์ ์ธ์ ์ผ๋ฐ์ ์ผ๋ก ํค๋ํ์ผ์ ์ฝ์ ํ๋ค. ๊ฐ์ฒด์์ฑ๋ฌธ ๋ฐ ์ ๊ทผ ๋ฌธ์ฅ์ ์ปดํ์ผํ๊ธฐ ์ํด์. ํด๋์ค์ ์ด๋ฆ์ ๋ผ์ Car.h๋ก ํค๋ํ์ผ์ ์ด๋ฆ์ ์ ์ํ๊ธฐ๋ ํ๋ค. ๋จ, ์ธ๋ผ์ธ ํจ์๋ ์ปดํ์ผ ๊ณผ์ ์์ ํจ์์ ํธ์ถ๋ฌธ์ ๋์ฒดํด์ผ ํ๊ธฐ ๋๋ฌธ์ ํค๋ํ์ผ์ ํจ๊ป ์ ์๋์ด์ผ ํ๋ค.
Car ํด๋์ค์ ๋ฉค๋ฒํจ์์ ๋ชธ์ฒด๋ ๋ค๋ฅธ ์ฝ๋์ ์ปดํ์ผ ๊ณผ์ ์์ ํ์ํ ๊ฒ ์๋๋ค. ๋งํฌ์ ๊ณผ์ ์ ํตํด์ ํ๋์ ๋ฐ์ด๋๋ฆฌ๋ก ๊ตฌ์ฑ๋ง ํ๋ฉด ๋๋ค. ๋ฐ๋ผ์ cpp ํ์ผ์ ์ ์ํ๋ ๊ฒ์ด ์ผ๋ฐ์ ์ด๋ค. ํด๋์ค์ ์ด๋ฆ์ ๋ฐ์ Car.cpp๋ก ์์คํ์ผ์ ์ด๋ฆ์ ์ ์ํ๊ธฐ๋ ํ๋ค.
void Car::InitMembers(char* ID, int fuel){}
'๐ฉโ๐ป ํ๋ก๊ทธ๋๋ฐ > ๐ C++' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[C++] ์ ๋ณด ์๋ | ์บก์ํ (0) | 2024.04.17 |
---|---|
[C++] ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ (0) | 2024.04.17 |
[C++] ์ฐธ์กฐ์(Reference) (0) | 2024.04.17 |
[C++] ํ๋ก๊ทธ๋จ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ | C++ ํ์ค ํค๋ (0) | 2024.04.17 |
[C++] const | new & delete | friend | static (0) | 2024.04.17 |