C Programming Language/C++

C++ ํƒ€์ž…๊ณผ ์ˆ˜์‹์— ๋Œ€ํ•ด ํ•™์Šตํ•˜๊ธฐ (2)

567Rabbit 2024. 8. 25. 14:16
 

C++ ํƒ€์ž…๊ณผ ์ˆ˜์‹์— ๋Œ€ํ•ด ํ•™์Šตํ•˜๊ธฐ (1)

cout - printf์™€ ๋น„์Šทํ•˜๋‹ค.- ํ‘œ์ค€ ์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ ๊ฐ์ฒด๋กœ, ์ฝ˜์†”์— ๋ฐ์ดํ„ฐ๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋จ- cout์€ ์ŠคํŠธ๋ฆผ ์—ฐ์‚ฐ์ž   cin- scanf์™€ ๋น„์Šทํ•˜๋‹ค.- ํ‘œ์ค€ ์ž…๋ ฅ ์ŠคํŠธ๋ฆผ ๊ฐ์ฒด๋กœ, ์‚ฌ์šฉ์ž๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅ

codebunny99.tistory.com

 

 

๋ฐฐ์—ด์ด๋ž€?

๋™์ผ ํƒ€์ž…์˜ ๋ณ€์ˆ˜์˜ ์ง‘ํ•ฉ

 

์ •์˜ ๋ฐฉ๋ฒ•

type ๋ณ€์ˆ˜๋ช…[n]

 

ex) int values[5] = {0, 10, 20, 30, 40};

 

 

 

๋ฐฐ์—ด์˜ ์›์†Œ ๊ฐ’์€ ๋ฐฐ์—ด์„ ์ •์˜ํ•  ๋•Œ ์ดˆ๊ธฐํ™” ๋  ์ˆ˜ ์žˆ๋‹ค

 

(1) ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋Š” ์ดˆ๊ธฐํ™” ๋ชฉ๋ก์˜ ํฌ๊ธฐ๋กœ ๊ฒฐ์ •๋œ๋‹ค

- ์ฆ‰ int intArray2[] = {1,2,3,4}; ๋Š” int intArray2[4] = {1,2,3,4}; ์™€ ๋™์ผํ•˜๋‹ค

 

(2) ์ง€์ •๋˜์ง€ ์•Š์€ ์›์†Œ์˜ ์ดˆ๊ธฐ๊ฐ’์€ 0์œผ๋กœ ๊ฒฐ์ •๋œ๋‹ค

- ์ฆ‰ intArray3[3] = {1,2}; ๋ผ๊ณ  ํ•œ๋‹ค๋ฉด int intArray3[3] = {1, 2, 0} ์œผ๋กœ ๋น„์–ด์žˆ๋Š” ์›์†Œ๋Š” 0์œผ๋กœ ์ดˆ๊ธฐ๊ฐ’์ด ๊ฒฐ์ •๋œ๋‹ค.

 

(3) ๋ฌธ์ž์˜ ๋ฐฐ์—ด์€ ๋ฌธ์ž์—ด ๋ฆฌํ„ฐ๋Ÿด์„ ์ด์šฉํ•˜์—ฌ ์ดˆ๊ธฐํ™”๋œ๋‹ค.

- char strArray1[] = "a string" ; ๋Š” char strArray1[] = {'a', ' ', 's', 't', 'r', 'i', 'g', 0}; ์™€ ๋™์ผํ•˜๋‹ค

 

(4) ํด๋ž˜์Šค ๊ฐ์ฒด์˜ ๋ฐฐ์—ด๋„ ๊ฐ€๋Šฅํ•˜๋‹ค

- string names[5] = {string("Kim"), string("Park")} ; ๋Š”  string names[5] = {'Kim', 'Park', 0, 0, 0} ;

- ์ด๋ฅผ ์‹คํ–‰์‹œํ‚ค๋ฉด names ๋ฐฐ์—ด์€ {"Kim", "Park", "", "", ""}๋กœ ์ดˆ๊ธฐํ™”๋œ๋‹ค

 

 

 

 

2์ฐจ์› ๋ฐฐ์—ด

- ๋‹ค๋ฅธ ๋ฐฐ์—ด์„ ์›์†Œ๋กœ ๊ฐ€์ง„๋‹ค

 

์ •์˜๋ฐฉ๋ฒ•

type ๋ณ€์ˆ˜๋ช…[ํ–‰][์—ด]

 

ex) int values[3][5];

 

 

- ์—ด์˜ ๊ฐœ์ˆ˜๋งŒํผ ์ ํ”„ํ•ด์•ผ ํ•˜๋ฏ€๋กœ 5๋Š” ์˜ˆ์‹œ์ด๋ฉฐ, ์—ด์˜ ๊ฐœ์ˆ˜๋งŒํผ ๋„ฃ์–ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.

 

 

 

 

 

๋™์  1์ฐจ์› ๋ฐฐ์—ด

 

- new์™€ delete๋ฅผ ์ด์šฉํ•˜์—ฌ ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์ค‘์— ํฌ๊ธฐ๋ฅผ ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๋™์  ๋ฐฐ์—ด์„ ์ •์˜

- heap(ํž™) ๋ฉ”๋ชจ๋ฆฌ์— ๊ณต๊ฐ„ ๋ถ€์—ฌ

 

cpp
๋‹ซ๊ธฐ
#include <iostream> using namespace std ; int main() { โ€‹โ€‹โ€‹โ€‹cout << "1์ฐจ์› ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋ฅผ ์ž…๋ ฅํ•˜์‹œ์˜ค." << endl; โ€‹โ€‹โ€‹โ€‹int intSize; โ€‹โ€‹โ€‹โ€‹cin >> intSize; โ€‹โ€‹โ€‹โ€‹// new๋กœ ์ž…๋ ฅ๋œ ํฌ๊ธฐ๋งŒํผ์˜ int๋ฅผ ํ• ๋‹น โ€‹โ€‹โ€‹โ€‹int* const intArray = new int[intSize]; โ€‹โ€‹โ€‹โ€‹for (int i = 0 ; i < intSize ; i++) โ€Œโ€‹โ€‹โ€‹โ€‹cin >> intArray[i]; โ€‹โ€‹โ€‹โ€‹delete[] intArray; //delete๋กœ ํ• ๋‹น๋œ ๋ฉ”๋ชจ๋ฆฌ ๋ฐ˜ํ™˜ }

 

 

 

 

 

ํฌ์ธํ„ฐ์˜ ๋™์  ๋ฐฐ์—ด

 

- stack ๋ฉ”๋ชจ๋ฆฌ์—์„œ heap ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํฌ์ธํ„ฐํ•œ๋‹ค

- heap ๋ฉ”๋ชจ๋ฆฌ์—๋Š” ํฌ์ธํ„ฐ๊ฐ€ ์กด์žฌํ•˜๋ฉฐ, stack ๋ฉ”๋ชจ๋ฆฌ์—๋Š” ๋ฐฐ์—ด์˜ ๊ฐ’์ด ์žˆ๋‹ค.

 

 

 

 

 

๋™์  2์ฐจ์› ๋ฐฐ์—ด

 

- stack ๋ฉ”๋ชจ๋ฆฌ์—์„œ heap ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํฌ์ธํ„ฐํ•œ๋‹ค

- heap ๋ฉ”๋ชจ๋ฆฌ์—๋Š” ํฌ์ธํ„ฐ๊ฐ€ ์กด์žฌํ•˜๋ฉฐ, stack ๋ฉ”๋ชจ๋ฆฌ์—๋Š” ๋ฐฐ์—ด์˜ ๊ฐ’( ex) intArrayA, intArrayB )์ด ์žˆ๋‹ค.

cpp
๋‹ซ๊ธฐ
#include <iostream> using namespace std ; int main() { โ€‹โ€‹โ€‹โ€‹cout << "ํ–‰๋ ฌ์˜ ํฌ๊ธฐ๋ฅผ ์ž…๋ ฅํ•˜์‹œ์˜ค." << endl; โ€‹โ€‹โ€‹โ€‹int rowSize, columnSize; โ€‹โ€‹โ€‹โ€‹cin >> rowSize >> columnSize; โ€‹โ€‹โ€‹โ€‹ โ€‹โ€‹โ€‹โ€‹cout << "ํ–‰๋ ฌA [" << rowSize << " X " << columnSize << "]์˜ ๊ฐ’์„ ์ž…๋ ฅํ•˜์‹œ์˜ค. \n"; โ€‹โ€‹โ€‹โ€‹int ** const intArrayA =new int*[rowSize]; โ€‹โ€‹โ€‹โ€‹for (int i = 0 ; i < rowSize ; i++){ โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹intArrayA[i] =new int[columnSize]; โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹for (int j = 0 ; j < columnSize ; j++) cin >> intArrayA[i][j]; โ€‹โ€‹โ€‹โ€‹} โ€‹โ€‹โ€‹โ€‹cout << endl; โ€‹โ€‹โ€‹โ€‹cout << "ํ–‰๋ ฌB [" << rowSize << " X " << columnSize << "]์˜ ๊ฐ’์„ ์ž…๋ ฅํ•˜์‹œ์˜ค. \n"; โ€‹โ€‹โ€‹โ€‹int ** const intArrayB =new int*[rowSize]; โ€‹โ€‹โ€‹โ€‹for (int i = 0 ; i < rowSize ; i++){ โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹intArrayB[i] =new int[columnSize]; โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹for (int j = ; j < columnSize ; j++) cin >> intArrayB[i][j]; โ€‹โ€‹โ€‹โ€‹} โ€Œcout << endl << "ํ–‰๋ ฌA + B๋Š”" << endl; โ€‹โ€‹โ€‹โ€‹for (int i = 0 ; i < rowSize ; i++){ โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹for (int j = 0 ; j < columnSize ; j++) { โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹const int a = intArrayA[i][j]; โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹const int b = intArrayB[i][j]; โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹cout << a << " + " << b << " = " << a+b << '\t' ; โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹} โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹cout << endl; โ€‹โ€‹โ€‹โ€‹} โ€‹โ€‹โ€‹โ€‹ โ€‹โ€‹โ€‹โ€‹//intArrayA, intArrayB๋ฅผ deleteํ•ด ์ฃผ์–ด์•ผ ํ•จ โ€‹โ€‹โ€‹โ€‹for (int i = 0 ; i < rowSize ; i++) { โ€Œโ€‹โ€‹โ€‹โ€‹delete [] intArrayA[i]; โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹delete [] intArrayB[i]; โ€‹โ€‹โ€‹โ€‹} โ€‹โ€‹โ€‹โ€‹ โ€‹โ€‹โ€‹โ€‹delete [] intArrayA ; โ€‹โ€‹โ€‹โ€‹delete [] intArrayB ; }

 

 

 

 

 

 

๋‚˜์—ดํ˜•(enum) = ์—ด๊ฑฐํ˜•

- ๋ช‡๊ฐ€์ง€ ํ•œ์ •๋œ ๊ฐ’์„ ๊ฐ€์ง€๋Š” ํƒ€์ž…

- ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ๊ฐ’๋“ค์„ ๋‚˜์—ดํ•จ์œผ๋กœ์จ ์ •์˜

 

ex)

cpp
๋‹ซ๊ธฐ
enum Grade { FRESH = 1, SOPHOMORE, JUNIOR, SENIOR };

 

  • FRESH = 1์€ ๋‚˜์—ดํ˜• ์ƒ์ˆ˜ FRESH์— ๊ฐ’ 1์„ ๋ช…์‹œ์ ์œผ๋กœ ํ• ๋‹นํ•œ๋‹ค.
  • ์ดํ›„์— ๋‚˜์˜ค๋Š” ๋‚˜์—ดํ˜• ์ƒ์ˆ˜๋“ค์€ ๋ณ„๋„๋กœ ๊ฐ’์„ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด, ๋ฐ”๋กœ ์ด์ „ ๊ฐ’๋ณด๋‹ค 1์”ฉ ์ฆ๊ฐ€ํ•œ ๊ฐ’์„ ์ž๋™์œผ๋กœ ๊ฐ€์ง€๊ฒŒ ๋จ๋”ฐ๋ผ์„œ, SOPHOMORE๋Š” 2, JUNIOR๋Š” 3, SENIOR๋Š” 4
  • ๋งŒ์•ฝ FRESH์— = 1์„ ์ง€์ •ํ•˜์ง€ ์•Š๊ณ  ๊ทธ๋ƒฅ FRESH๋ผ๊ณ ๋งŒ ํ–ˆ๋‹ค๋ฉด, C++์—์„œ ๋‚˜์—ดํ˜•์˜ ์ฒซ ๋ฒˆ์งธ ์ƒ์ˆ˜๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ 0์˜ ๊ฐ’์„ ๊ฐ€์ง„๋‹ค. ๊ทธ ํ›„๋กœ ๋‚˜์˜ค๋Š” ์ƒ์ˆ˜๋“ค์€ ๊ทธ ์•ž์˜ ๊ฐ’์— 1์”ฉ ๋”ํ•ด์ ธ ํ• ๋‹น๋œ๋‹ค. ex) 0, 1, 2, 3

 

cpp
๋‹ซ๊ธฐ
Grade curGrade = FRESH;

 

- ๋‚˜์—ดํ˜• ํƒ€์ž… ์ด๋ฆ„์€ int, float ๋“ฑ๊ณผ ๋™์ผํ•œ ๋ฐฉ์‹์œผ๋กœ ๋ณ€์ˆ˜๋ฅผ ์ •์˜ํ•  ๋•Œ ํƒ€์ž… ์ด๋ฆ„์œผ๋กœ์„œ ์‚ฌ์šฉ

- curGrade๋Š” ๋ณ„์นญ(๋ณ€์ˆ˜ ์ด๋ฆ„)์„ ๋ถ€์—ฌํ•œ ๊ฒƒ์ด๋‹ค.

 

 

 

 

๋‚˜์—ดํ˜•์˜ ํ˜•๋ณ€ํ™˜

 

- ๋‚˜์—ดํ˜• ํƒ€์ž…์˜ ๋ฆฌํ„ฐ๋Ÿด์€ ๋‚ด๋ถ€์ ์œผ๋กœ int ํƒ€์ž…์œผ๋กœ ์ฒ˜๋ฆฌํ•จ

 

(1) ๋‚˜์—ดํ˜• -> int ํƒ€์ž…์œผ๋กœ ๋ฌต์‹œ์ ์œผ๋กœ ํ˜•๋ณ€ํ™˜

 

(2) int๊ฐ’ -> ๋‚˜์—ดํ˜• ํƒ€์ž…์œผ๋กœ ๋ช…์‹œ์ ์œผ๋กœ ํ˜•๋ณ€ํ™˜

 

 

 

 

 

๋‚˜์—ดํ˜•์˜ ํ™œ์šฉ

 

- ๊ฐ€๋…์„ฑ์„ ์œ„ํ•ด

 

- ๊ฒฐํ•จ๋ฐฉ์ง€๋ฅผ ์œ„ํ•ด

 

 

 

 

 

 

๊ตฌ์กฐ์ฒด(struct)

 

- ๊ธฐ์กด ํƒ€์ž…์˜ ๋ณ€์ˆ˜๋“ค์˜ ์กฐํ•ฉ์œผ๋กœ์„œ ์ƒˆ๋กœ์šด ํƒ€์ž…์„ ์ •์˜

 

C++์—์„œ์˜ ๊ตฌ์กฐ์ฒด(struct)๋Š” C์–ธ์–ด์—์„œ์˜ ๊ตฌ์กฐ์ฒด์™€ ์œ ์‚ฌํ•˜์ง€๋งŒ, ๋ช‡ ๊ฐ€์ง€ ์ค‘์š”ํ•œ ์ฐจ์ด์ ์ด ์žˆ๋‹ค.

์ด ์ฐจ์ด์ ๋“ค์€ C++์ด ๊ฐ์ฒด์ง€ํ–ฅ ์–ธ์–ด๋กœ ๋ฐœ์ „ํ•˜๋ฉด์„œ ๊ตฌ์กฐ์ฒด์˜ ๊ธฐ๋Šฅ์ด ํ™•์žฅ๋œ ๊ฒƒ๊ณผ ๊ด€๋ จ์ด ์žˆ๋‹ค.

 

 

 

1. ๊ตฌ์กฐ์ฒด ๋ฉค๋ฒ„์˜ ๊ธฐ๋ณธ ์ ‘๊ทผ ์ œํ•œ์ž

  • C์–ธ์–ด: C์—์„œ ๊ตฌ์กฐ์ฒด์˜ ๋ฉค๋ฒ„๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ณต๊ฐœ(public)
  • C++: C++์—์„œ๋„ ๊ตฌ์กฐ์ฒด์˜ ๋ฉค๋ฒ„๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ณต๊ฐœ(public)  ๊ทธ๋Ÿฌ๋‚˜, C++์—์„œ๋Š” ํด๋ž˜์Šค์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ ‘๊ทผ ์ง€์ •์ž(public, private, protected)๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

2. ๊ตฌ์กฐ์ฒด์™€ ํด๋ž˜์Šค์˜ ์ฐจ์ด

  • C์–ธ์–ด: C์—์„œ๋Š” ๊ตฌ์กฐ์ฒด์™€ ํด๋ž˜์Šค์˜ ๊ฐœ๋…์ด ์—†๋‹ค. ๊ตฌ์กฐ์ฒด๋Š” ๋‹จ์ˆœํžˆ ์—ฌ๋Ÿฌ ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ๋ฌถ๋Š” ๋ฐ ์‚ฌ์šฉ
  • C++: C++์—์„œ๋Š” ๊ตฌ์กฐ์ฒด์™€ ํด๋ž˜์Šค์˜ ๊ธฐ๋Šฅ์ด ๊ฑฐ์˜ ๋™์ผํ•˜๋‹ค. ๋‘˜์˜ ์œ ์ผํ•œ ์ฐจ์ด์ ์€ ๊ธฐ๋ณธ ์ ‘๊ทผ ์ œํ•œ์ž์ž…๋‹ˆ๋‹ค.
    • ๊ตฌ์กฐ์ฒด์˜ ๋ฉค๋ฒ„๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ public
    • ํด๋ž˜์Šค์˜ ๋ฉค๋ฒ„๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ private
cpp
๋‹ซ๊ธฐ
struct MyStruct { โ€‹โ€‹โ€‹โ€‹int x; // public by default }; class MyClass { โ€‹โ€‹โ€‹โ€‹int x; // private by default };
 

 

 

3. ๋ฉค๋ฒ„ ํ•จ์ˆ˜์˜ ์ •์˜

  • C์–ธ์–ด: ๊ตฌ์กฐ์ฒด ๋‚ด๋ถ€์— ํ•จ์ˆ˜๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์—†๋‹ค. ๊ตฌ์กฐ์ฒด๋Š” ๋ฐ์ดํ„ฐ๋งŒ์„ ํฌํ•จ
  • C++: ๊ตฌ์กฐ์ฒด ๋‚ด๋ถ€์— ๋ฉค๋ฒ„ ํ•จ์ˆ˜๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค. ์‚ฌ์‹ค์ƒ ํด๋ž˜์Šค์™€ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ๊ตฌ์กฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค
cpp
๋‹ซ๊ธฐ
struct MyStruct { โ€‹โ€‹โ€‹โ€‹int x; โ€‹โ€‹โ€‹โ€‹void print() { // ๊ตฌ์กฐ์ฒด ๋‚ด์— ๋ฉค๋ฒ„ ํ•จ์ˆ˜ ์ •์˜ ๊ฐ€๋Šฅ โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹std::cout << "x = " << x << std::endl; โ€‹โ€‹โ€‹โ€‹} };

 

 

 

4. ์ƒ์†๊ณผ ๋‹คํ˜•์„ฑ

  • C์–ธ์–ด: C์—์„œ๋Š” ๊ตฌ์กฐ์ฒด๊ฐ€ ์ƒ์†์ด๋‚˜ ๋‹คํ˜•์„ฑ์„ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • C++: C++์—์„œ๋Š” ๊ตฌ์กฐ์ฒด๋„ ํด๋ž˜์Šค์ฒ˜๋Ÿผ ์ƒ์†์„ ์ง€์›ํ•˜๋ฉฐ, ๋‹คํ˜•์„ฑ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฆ‰, ๊ตฌ์กฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•ด ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.
cpp
๋‹ซ๊ธฐ
struct Base { โ€‹โ€‹โ€‹โ€‹int x; }; struct Derived : public Base { โ€‹โ€‹โ€‹โ€‹int y; };

 

5. ์ƒ์„ฑ์ž์™€ ์†Œ๋ฉธ์ž

  • C์–ธ์–ด: C์—์„œ๋Š” ๊ตฌ์กฐ์ฒด์— ์ƒ์„ฑ์ž๋‚˜ ์†Œ๋ฉธ์ž๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์—†๋‹ค. ๊ตฌ์กฐ์ฒด์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๊ฑฐ๋‚˜ ํ•ด์ œํ•˜๋Š” ์ž‘์—…์€ ์ˆ˜๋™์œผ๋กœ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•จ
  • C++: C++์—์„œ๋Š” ๊ตฌ์กฐ์ฒด์—๋„ ์ƒ์„ฑ์ž์™€ ์†Œ๋ฉธ์ž๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค. C++์˜ ๊ตฌ์กฐ์ฒด๋Š” ํด๋ž˜์Šค์™€ ๋™์ผํ•œ ๋ฐฉ์‹์œผ๋กœ ์ƒ์„ฑ์ž์™€ ์†Œ๋ฉธ์ž๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
cpp
๋‹ซ๊ธฐ
struct MyStruct { โ€‹โ€‹โ€‹โ€‹int x; โ€‹โ€‹โ€‹โ€‹MyStruct(int val) : x(val) {} // ์ƒ์„ฑ์ž โ€‹โ€‹โ€‹โ€‹~MyStruct() {} // ์†Œ๋ฉธ์ž };

 

 

 

6. ํ…œํ”Œ๋ฆฟ ์ง€์›

  • C์–ธ์–ด: C์—์„œ๋Š” ๊ตฌ์กฐ์ฒด์— ํ…œํ”Œ๋ฆฟ ๊ธฐ๋Šฅ์ด ์—†๋‹ค.
  • C++: C++์—์„œ๋Š” ๊ตฌ์กฐ์ฒด๋„ ํ…œํ”Œ๋ฆฟ์„ ์ง€์›ํ•˜์—ฌ, ์ œ๋„ค๋ฆญ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
cpp
๋‹ซ๊ธฐ
template <typename T> struct MyStruct { โ€‹โ€‹โ€‹โ€‹T value; };

 

 

 

7. ๊ธฐํƒ€ ์ฐจ์ด์ 

  • ์—ฐ์‚ฐ์ž ์˜ค๋ฒ„๋กœ๋”ฉ: C++์—์„œ๋Š” ๊ตฌ์กฐ์ฒด์—์„œ๋„ ์—ฐ์‚ฐ์ž ์˜ค๋ฒ„๋กœ๋”ฉ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋Š” C์—์„œ ์ง€์›๋˜์ง€ ์•Š๋Š” ๊ธฐ๋Šฅ
  • ๋™์  ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ: C++์˜ ๊ตฌ์กฐ์ฒด๋Š” C++์˜ ๋™์  ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ๊ธฐ๋Šฅ(์˜ˆ: new ๋ฐ delete)๊ณผ ์ž˜ ํ†ตํ•ฉ๋œ๋‹ค. C์—์„œ๋Š” ์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ์ด ๊ตฌ์กฐ์ฒด์™€ ํ†ตํ•ฉ๋˜์ง€ ์•Š์•˜์œผ๋ฉฐ, ์ˆ˜๋™์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹น ๋ฐ ํ•ด์ œํ•ด์•ผ ํ•œ๋‹ค.

 

 

 

 

๊ณต์šฉ์ฒด(Union : ์œ ๋‹ˆ์˜จ)

 

- ๋™์ผํ•œ ๊ณต๊ฐ„์„ ๊ณต์œ ํ•˜๋Š” ์—ฌ๋Ÿฌ๊ฐœ์˜ ๋ณ€์ˆ˜๋ฅผ ์ •์˜

 

ex)

 

 

 

๊ตฌ์กฐ์ฒด์™€ ๊ณต์šฉ์ฒด์˜ ์ฐจ์ด

 

- ๋ฉ”๋ชจ๋ฆฌ ํšจ์œจ์ด ๋‹ฌ๋ผ์ง„๋‹ค.

- ๊ทธ๋Ÿฌ๋‚˜ ๋™์ผํ•œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฏ€๋กœ ๊ณต์šฉ์ฒด์˜ ๊ฐ ํ•„๋“œ์˜ ๊ฐ’์€ ์„œ๋กœ ์˜ํ–ฅ์„ ๋ฏธ์น  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ฃผ์˜ํ•œ๋‹ค.

 

์‚ฌ์šฉ ์ฃผ์˜ ์˜ˆ์‹œ)

 

 

 

 

typedef

 

- ๊ธฐ์กด์˜ ํƒ€์ž…๊ณผ ๋™์ผํ•œ ์—ญํ• ์„ ํ•˜๋Š” ์ƒˆ๋กœ์šด ํƒ€์ž… ๋ณ„์นญ์„ ์ •์˜ํ•œ๋‹ค.

cpp
๋‹ซ๊ธฐ
typedef unsigned int Age; typedef double celsius t ; typedef double fahrenheit_t;

 

- ์ƒˆ๋กญ๊ฒŒ ์ •์˜๋œ ํƒ€์ž… ์ด๋ฆ„์€ ๋ณ€์ˆ˜์˜ ์ •์˜, ํ•จ์ˆ˜์˜ ๋งค๊ฐœ๋ณ€์ˆ˜ ํƒ€์ž… ๋“ฑ์œผ๋กœ ๋™์ผํ•˜๊ฒŒ ์‚ฌ์šฉ

cpp
๋‹ซ๊ธฐ
Age me = 20; celsius_t getCelsius(fahrenheit_t f);