๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

์ „์ฒด ๊ธ€126

[C++] 16-1. ์ƒ์†(Inheritance)๊ณผ ๊ฐ€์ƒ ํ•จ์ˆ˜(Virtual Function) ์ด๋ฒˆ ํฌ์ŠคํŒ…๋ถ€ํ„ฐ๋Š” ๊ฒฝ์–ด์ฒด๋กœ ๊ธ€์„ ์“ฐ๊ฒ ์”๋‹ˆ๋‹ค. ์—ฌํƒœ๊นŒ์ง€ ํ‰์–ด์ฒด๋กœ ํฌ์ŠคํŒ…ํ–ˆ๋Š”๋ฐ, ๋”ฑ๋”ฑํ•œ ๋А๋‚Œ์ด ๋“ค์–ด์„œ ์ง€๊ธˆ๋ถ€ํ„ฐ๋Š” ์ข€ ๋” ์นœ์ ˆํ•˜๊ฒŒ ์ž์„ธํ•˜๊ฒŒ ์„ค๋ช…ํ•˜๋ ค๊ณ  ๊ฒฝ์–ด์ฒด๋ฅผ ์‚ฌ์šฉํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค! ์ƒ์†(Inheritance) ๊ฐ์ฒด ์ง€ํ–ฅ์˜ 4๋Œ€ ์›์น™(์บก์Аํ™”, ์ถ”์ƒํ™”, ์ƒ์†, ๋‹คํ˜•์„ฑ) ์ค‘ ์ƒ์† ๊ทธ๋ฆฌ๊ณ  ๋‹คํ˜•์„ฑ์„ ๋‹ค๋ค„๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ƒ์†์€ ๊ฐ์ฒด์ง€ํ–ฅ์˜ ๊ฝƒ์ด์ž ํ•ต์‹ฌ์ด๋ผ๊ณ ๋„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํด๋ž˜์Šค ์ž์ฒด๋งŒ์œผ๋กœ๋„ ๊ฐ์ฒด๋ผ๋ฆฌ์˜ ๊ด€๊ณ„๋ฅผ ํ‘œํ˜„ํ•œ๋‹ค๋ฉด, ์ƒ์†์„ ํ†ตํ•œ ๋‹คํ˜•์„ฑ์€ ๊ฐ์ฒด ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ๋”์šฑ ํ’์„ฑํ•˜๊ณ  ์‰ฝ๊ฒŒ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜์ฃ . ์ƒ์†์„ ํ†ตํ•ด ๊ธฐ์กด์— ์ •์˜๋œ ํด๋ž˜์Šค๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ƒˆ๋กœ์šด ํด๋ž˜์Šค๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ณตํ†ต๋œ ๊ฒƒ์„ ๊ณต์œ ํ•˜๊ณ  ํ™•์žฅ ๊ฐ€๋Šฅํ•˜๋„๋ก ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ƒ์†์€ ํด๋ž˜์Šค ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ์„ค์ •ํ•˜์—ฌ ์ฝ”๋“œ ์žฌ์‚ฌ์šฉ๊ณผ ๊ณ„์ธต์  ๊ตฌ์กฐ๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ.. 2023. 6. 23.
[C++] 15. ํด๋ž˜์Šค(class)์™€ ๊ตฌ์กฐ์ฒด(struct) # ๊ตฌ์กฐ์ฒด(struct) ๊ตฌ์กฐ์ฒด(struct)๋Š” ๊ด€๋ จ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฌถ์–ด ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•œ ์‚ฌ์šฉ์ž ์ •์˜ ๋ฐ์ดํ„ฐ ํ˜•์‹์ž…๋‹ˆ๋‹ค. ๊ตฌ์กฐ์ฒด๋Š” ๋ฉค๋ฒ„ ๋ณ€์ˆ˜์˜ ์ง‘ํ•ฉ์œผ๋กœ ์ด๋ฃจ์–ด์ง€๋ฉฐ, ๊ฐ ๋ฉค๋ฒ„ ๋ณ€์ˆ˜๋Š” ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ ํ˜•์‹์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ตฌ์กฐ์ฒด๋Š” ํด๋ž˜์Šค์™€ ์œ ์‚ฌํ•˜์ง€๋งŒ ํด๋ž˜์Šค์™€๋Š” ๋ช‡ ๊ฐ€์ง€ ์ค‘์š”ํ•œ ์ฐจ์ด์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ตฌ์กฐ์ฒด๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๊ด€๋ จ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ทธ๋ฃนํ™”ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋ฉฐ, ํŠน์ • ๋™์ž‘์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•œ ๋ฉค๋ฒ„ ํ•จ์ˆ˜๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์‚ฌ์‹ค C++์—์„œ๋Š” ๋ฉค๋ฒ„ ํ•จ์ˆ˜๋ฅผ ์–ผ๋งˆ๋“ ์ง€ ๊ฐ€์งˆ ์ˆ˜๋Š” ์žˆ์ง€๋งŒ, ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃจ๋Š” ๊ตฌ์กฐ์ฒด์˜ ํŠน์„ฑ์ƒ ๋งŽ์€ ๊ธฐ๋Šฅ์„ ํ•˜๋Š” ํ•จ์ˆ˜๋Š” ์ •์˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.(๊ทธ๋Ÿด ๋ฐ”์—” ํด๋ž˜์Šค๋ฅผ ์จ์•ผ ํ•ฉ๋‹ˆ๋‹ค) ๋ฉค๋ฒ„ ๋ณ€์ˆ˜๋Š” ์ฃผ๋กœ ๊ตฌ์กฐ์ฒด ๋‚ด์—์„œ ์ง์ ‘ ์ ‘๊ทผ๋˜์–ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ, ๊ตฌ์กฐ์ฒด์˜ ๊ธฐ๋ณธ์ ์ธ ๊ฐ€์‹œ์„ฑ์€ public์œผ๋กœ ์„ค์ •๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰.. 2023. 6. 9.
[STL][functional] std::bind, std::function # std::bind, std::function std::bind ํ•จ์ˆ˜ ํ…œํ”Œ๋ฆฟ์€ ํ•จ์ˆ˜๋‚˜ ํ•จ์ˆ˜ ๊ฐ์ฒด๋ฅผ ๋” ์ž‘์€ ์ธ์ž ๋ฆฌ์ŠคํŠธ๋กœ ๋ฐ”์ธ๋”ฉํ•˜์—ฌ ์ƒˆ๋กœ์šด ํ•จ์ˆ˜๋‚˜ ํ•จ์ˆ˜ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. ์ด๋Š” ๋ฏธ๋ฆฌ ์ง€์ •ํ•œ ์ธ์ž ๊ฐ’์ด๋‚˜ ์ธ์ž ์œ„์น˜์— ๊ฐ’์„ ๊ณ ์ •์‹œํ‚ค๋Š” ๋ฐ ์‚ฌ์šฉ๋œ๋‹ค. std::bind๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ธ์ž๋ฅผ ์ผ๋ถ€ ๊ณ ์ •ํ•˜๊ฑฐ๋‚˜ ์ˆœ์„œ๋ฅผ ๋ณ€๊ฒฝํ•˜์—ฌ ํ•จ์ˆ˜ ํ˜ธ์ถœ ์‹œ ์œ ์—ฐ์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ๋‹ค. std::function์€ ํ•จ์ˆ˜ ํฌ์ธํ„ฐ์™€ ๋น„์Šทํ•œ ๊ฐœ๋…์œผ๋กœ, ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ๊ฐ์ฒด๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ํ•จ์ˆ˜ ๊ฐ์ฒด(wrapper)์ด๋‹ค. ๋‹ค์–‘ํ•œ ์ข…๋ฅ˜์˜ ํ•จ์ˆ˜๋‚˜ ํ•จ์ˆ˜ ๊ฐ์ฒด๋ฅผ ์ €์žฅํ•˜๊ณ  ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ํŠนํžˆ ๋Ÿฐํƒ€์ž„ ์‹œ์— ๋‹ค๋ฅธ ํ•จ์ˆ˜๋‚˜ ํ•จ์ˆ˜ ๊ฐ์ฒด๋ฅผ ํ• ๋‹นํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. std::bind์™€ std::function์€ ์„œ๋กœ ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š”๋‹ค. ํŠนํžˆ ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ๊ฐ•์ ์„ ๋ณด.. 2023. 6. 8.
[STL] utility : minmax, move, forward, swap # std::minmax std::min๊ณผ std::max๋Š” ๋งŽ์ด ์จ๋ดค์ง€๋งŒ std::minmax๋Š” ์จ๋ณด์ง€ ์•Š์•˜๋‹ค. ์‚ฌ์šฉ ๋ฐฉ๋ฒ•์€ ์‹ฌํ”Œํ•˜๋‹ค. std::minmax๋Š” std::pair๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š”๋ฐ, ์ฒซ ๋ฒˆ์งธ๊ฐ€ ์ตœ์†Ÿ๊ฐ’, ๋‘ ๋ฒˆ์งธ๊ฐ€ ์ตœ๋Œ“๊ฐ’์ด๋‹ค. min, max, minmax ๋ชจ๋‘ ๋””ํดํŠธ ์—ฐ์‚ฐ์ž๋Š” ' 2023. 6. 4.
[C++] 14. ์ฐธ์กฐ์ž(Reference) โœ… ์ฐธ์กฐ์ž(Reference) ์ฐธ์กฐ์ž๋Š” ํฌ์ธํ„ฐ์™€ ์ƒ๋‹นํžˆ ์œ ์‚ฌํ•œ ๊ฐœ๋…์ด๋‹ค. C์—์„œ๋Š” ํฌ์ธํ„ฐ๋งŒ ์žˆ์—ˆ์ง€๋งŒ C++์—์„œ๋Š” ์ฐธ์กฐ์ž(Reference)๋ผ๋Š” ๊ฐœ๋…์ด ๋„์ž…๋˜๋ฉด์„œ ์ข€ ๋” ํŽธํ•˜๊ฒŒ ์ฃผ์†Œ๊ฐ’์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๋‹ค. ์‚ฌ์‹ค C++์—์„œ๋„ ํฌ์ธํ„ฐ์— ์˜์กดํ•˜๊ณ  ์‹ถ์ง€ ์•Š์•˜๊ณ  *๊ณผ ->๋ฅผ ์ค„์ด๊ณ  ์‹ถ์—ˆ๋‹ค๊ณ  ํ•œ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ํ• ๋‹นํ•˜๊ณ  ๋ณ€์ˆ˜๋ผ๋Š” ๊ฒƒ์œผ๋กœ ์ด๋ฆ„์„ ์ง€์–ด์ค€๋‹ค. ์ฐธ์กฐ์ž๋Š” ์ด ์ด๋ฆ„์— ๋ณ„๋ช…์„ ๋ถ™์—ฌ์ฃผ๋Š” ๊ฒƒ์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด '๊ทผํ˜ธ'์˜ ๋ณ„๋ช…์ด '๊ทผ๋˜๋ฆฌ'๋ผ๊ณ  ํ–ˆ์„ ๋•Œ '๊ทผํ˜ธ'์—๊ฒŒ ๊ณผ์ž๋ฅผ ์ฃผ๋Š” ๊ฒƒ๊ณผ '๊ทผ๋˜๋ฆฌ'์—๊ฒŒ ๊ณผ์ž๋ฅผ ์ฃผ๋Š” ๊ฒƒ์€ ๋™์ผํ•˜๋‹ค. ๊ฒฐ๊ตญ, ์ฐธ์กฐ์ž๋Š” ๋˜ ๋‹ค๋ฅธ ์ด๋ฆ„์„ ๋ถ€์—ฌํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™๋‹ค๊ณ  ๋ณด๋ฉด ๋œ๋‹ค. #include using namespace std; int main() { int var = 10; int &ref .. 2023. 6. 2.
ํŒจํ‚ค์ง€์™€ __init__ํŒŒ์ผ ํŒจํ‚ค์ง€(Package) ํŒŒ์ด์ฌ์—์„œ ํŒจํ‚ค์ง€๋Š” ์ž๋ฐ”์™€ ๋™์ผํ•˜๊ฒŒ ํŒŒ์ผ์˜ ๊ณ„์ธต๊ตฌ์กฐ๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‹ค๋ฅธ ํŒŒ์ผ์— ์ •์˜๋˜์–ด ์žˆ๋Š” ํด๋ž˜์Šค๋ฅผ ํ™œ์šฉํ•  ๋•Œ๋Š” ๋ชจ๋“ˆํ˜•ํƒœ๋กœ ๋ถˆ๋Ÿฌ์˜จ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์ž. person/ __init__.py male/ __init__.py run.py female/ __init__.py run.py Female/run.py์˜ test_run ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•ด๋ณด์ž. ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. import person.female.run person.female.run.test_run() Person.Female.run์˜ ํ˜•ํƒœ๋กœ ๋ชจ๋“ˆ์„ ๋ถˆ๋Ÿฌ์™€์„œ ๋ชจ๋“ˆ์˜ ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋‹ค. from person.female import run run.test_run() from๊ณผ .. 2023. 5. 31.