42seoul/projects

42seoul/projects

[C++] ์„œ๋ธŒ ํƒ€์ž… ๋‹คํ˜•์„ฑ(Subtype Polymorphism)

์˜ค๋ฒ„๋กœ๋”ฉ์ด๋‚˜ ๋Ÿฐํƒ€์ž„ ๋‹คํ˜•์„ฑ์œผ๋กœ๋„ ๋ถˆ๋ฆฐ๋‹ค. class Animal { // ... }; class Cat : public Animal { // ... }; int main(void) { const Animal* temp = new Cat(); return 0; } ์ƒ์†๋ฐ›์€ ์ƒ์œ„ ํด๋ž˜์Šค์˜ ๋งค์†Œ๋“œ๋ฅผ ์žฌ์ •์˜ํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋Š”๊ฒƒ์„ ์„œ๋ธŒํƒ€์ž… ๋‹คํ˜•์„ฑ์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค๊ณ ํ•œ๋‹ค. https://github.com/utilForever/modern-cpp-tutorial/blob/master/Articles/The%20Four%20Polymorphisms%20in%20C%2B%2B.md

42seoul/projects

[CPP Module] 04

๊ธฐ๋ณธ ๊ทœ์น™ Orthodox Canonical Form ์ƒ์„ฑ์ž ๋ณต์‚ฌ ์ƒ์„ฑ์ž ๋ณต์‚ฌ ํ• ๋‹น ์ƒ์„ฑ์ž ์†Œ๋ฉธ์ž ์ด 4๊ฐ€์ง€๋ฅผ ํฌํ•จ include guards ์ฝ”๋“œ ๋ถ„ํ• ์„ ์œ„ํ•ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์ถ”๊ฐ€ํŒŒ์ผ ์‚ฌ์šฉ๊ฐ€๋Šฅ C++ ์—ญ์‹œ new๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๊ฐ€ ๋ฐœ์ƒ๋  ์ˆ˜ ์žˆ๊ธฐ๋•Œ๋ฌธ์— ๋ฉ”๋ชจ๋ฆฌ์— ๋Œ€ํ•œ ๋ˆ„์ˆ˜๋ฐฉ์ง€๋ฅผ ํ•ด์ค˜์•ผํ•œ๋‹ค ex00 : Polymorphism ์ƒ์†์ด๋ผ๋Š” ๊ฐœ๋…์„ ์‘์šฉํ•ด์„œ ์จ๋ณด๋Š” ๊ณผ์ œ new c์–ธ์–ด์˜ malloc์ด๋‚˜ free์™€ ๋˜‘๊ฐ™์ด c++์—๋„ ๋™์ ํ• ๋‹น์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•˜๊ณ  ํ•ด์ง€ํ•˜๋Š” ๊ฒƒ์ด ์กด์žฌํ•œ๋‹ค. new์˜ ๊ฒฝ์šฐ์—๋Š” ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœํ•˜๊ณ , delete์˜ ๊ฒฝ์šฐ์—๋Š” ์†Œ๋ฉธ์ž๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค. class* a = new class; // ์ƒ์„ฑ์ž ํ˜ธ์ถœ . . . delete a; // ์†Œ๋ฉธ์ž ํ˜ธ์ถœ ์œ„์™€ ๊ฐ™์€ ํ˜•์‹์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•˜๊ฑฐ๋‚˜ ํ•ด์ œ..

42seoul/projects

[C++] endl ๊ณผ ‘\n’ ์ฐจ์ด์ 

endl ๊ณผ ‘\n’ ์ฐจ์ด์ std::cout

42seoul/projects

[C++] Inheritance ( ์ƒ์† ), polymorphism ( ๋‹คํ˜•์„ฑ )

ํ•˜๋‚˜์˜ ํƒ€์ž…์— ์—ฌ๋Ÿฌ ๊ฐ์ฒด๋ฅผ ๋Œ€์ž…ํ•  ์ˆ˜ ์žˆ๋Š” ์„ฑ์งˆ ๋‹คํ˜•์„ฑ์ด๋ผ๋Š” ๊ฐœ๋…์„ ์•Œ๊ธฐ์ „์— ๋‹คํ˜•์„ฑ๊ณผ ๋ฐ€์ ‘ํ•˜๊ฒŒ ๊ด€๋ จ์ด ์žˆ๋Š” ์ƒ์†์ด๋ผ๋Š” ๊ฐœ๋…์„ ์ดํ•ด๋ฉด ๋” ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. Inheritance ( ์ƒ์† ) ๋ถ€๋ชจํด๋ž˜์Šค์— ์žˆ๋Š” ๋ฉค๋ฒ„ ํ•จ์ˆ˜๋‚˜ ๋ฉค๋ฒ„ ๋ณ€์ˆ˜๋“ค์„ ๋ฌผ๋ ค ๋ฐ›์•„์„œ ์ƒˆ๋กœ์šด ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ class Parent { public: ... }; class Child : public Parent { public: ... } ํด๋ž˜์Šค์—์„œ๋Š” ์œ„์™€๊ฐ™์ด ๋‹ค๋ฅธ ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›์•„์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. parent๋ผ๋Š” class๋ฅผ child๋ผ๋Š” ํด๋ž˜์Šค๊ฐ€ ๋ฐ›์•„์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. ( ์ด๋•Œ ์ƒ์†์„ ๋ฐ›๋Š” ํด๋ž˜์Šค๋ฅผ ์ž์‹ํด๋ž˜์Šค๋ผ๊ณ  ์ด์•ผ๊ธฐํ•˜๊ณ  ์ƒ์†์„ ํ•ด์ฃผ๋Š” ํด๋ž˜์Šค๋ฅผ ๋ถ€๋ชจํด๋ž˜์Šค๋ผ๊ณ  ์ด์•ผ๊ธฐํ•œ๋‹ค. ) ์œ„์™€ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ์ƒ์†์„ ๋ฐ›์œผ๋ฉด ์ƒ์†์„ ํ•ด..

42seoul/projects

[C++] operator overloading ( ์—ฐ์‚ฐ์ž ์˜ค๋ฒ„๋กœ๋”ฉ ) operator overriding ( ์—ฐ์‚ฐ์ž ์˜ค๋ฒ„๋ผ์ด๋”ฉ )

์—ฐ์‚ฐ์ž ์˜ค๋ฒ„๋กœ๋”ฉ์„ ์•Œ์•„๊ฐ€๊ธฐ์ „์— ์šฐ๋ฆฌ๋Š” ํด๋ž˜์Šค์—์„œ์˜ ์—ฐ์‚ฐ์ž์žฌ์ •์˜๋ผ๋Š” ๊ฐœ๋…์— ๋Œ€ํ•ด์„œ ์•Œ์•„์•ผํ•œ๋‹ค. ์—ฐ์‚ฐ์ž ์žฌ์ •์˜ int a = 3; int b = 5; c = a + b // // class ============= class a; class b; c = a + b // ์œ„์™€ ๊ฐ™์ด ํ‰๋ฒ”ํ•˜๊ฒŒ int ํ˜•์‹๋ผ๋ฆฌ์˜ ์—ฐ์‚ฐ์€ ๊ทธ๋ƒฅ ๊ฐ€๋Šฅํ•˜๊ฒ ์ง€๋งŒ ์šฐ๋ฆฌ๊ฐ€ ์ง„ํ–‰์„ ํ•  class๋ผ๋ฆฌ์˜ ์—ฐ์‚ฐ์€ class ๋‚ด๋ถ€์ ์œผ๋กœ ์–ด๋–ป๊ฒŒ ์—ฐ์‚ฐ์„ ์ง„ํ–‰ํ•ด์•ผํ•˜๋Š”์ง€ ์–ด๋– ํ•œ ๊ฐ์ฒด๋ผ๋ฆฌ ๋”ํ• ๊ฑด์ง€ ์•Œ ์ˆ˜ ์—†๋‹ค. ๊ทธ๋ž˜์„œ class ๋ผ๋ฆฌ ์—ฐ์‚ฐ์„ ํ•˜๊ธฐ์œ„ํ•ด์„œ๋Š” ๋”ฐ๋กœ ์ •์˜๋ฅผ ํ•ด์ค˜์•ผํ•œ๋‹ค. // ์•„๋ž˜์™€ ๊ฐ™์€ ๋ฐฉ์‹์„ ์‚ฌ์šฉ classclass::operator + ( const class& other ) { class temp; temp = this->value + other..

42seoul/projects

[CPP Module] 03

ํ•„์š”ํ•œ ๊ฐœ๋…์ •๋ฆฌ ๊ธฐ๋ณธ ๊ทœ์น™ Orthodox Canonical Form module 02์™€ ๋งˆ์นœ๊ฐ€์ง€๋กœ ์ƒ์„ฑ์ž ๋ณต์‚ฌ ์ƒ์„ฑ์ž ๋ณต์‚ฌ ํ• ๋‹น ์ƒ์„ฑ์ž ์†Œ๋ฉธ์ž ์ด 4๊ฐ€์ง€๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ์–ด์•ผํ•œ๋‹ค. include guards ์ฝ”๋“œ ๋ถ„ํ• ์„ ์œ„ํ•ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์ถ”๊ฐ€ํŒŒ์ผ ์‚ฌ์šฉ๊ฐ€๋Šฅ C++ ์—ญ์‹œ new๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๊ฐ€ ๋ฐœ์ƒ๋  ์ˆ˜ ์žˆ๊ธฐ๋•Œ๋ฌธ์— ๋ฉ”๋ชจ๋ฆฌ์— ๋Œ€ํ•œ ๋ˆ„์ˆ˜๋ฐฉ์ง€๋ฅผ ํ•ด์ค˜์•ผํ•œ๋‹ค ex00 endl ๊ณผ ‘\n’ ์ฐจ์ด์  ex00์— ๋“ค์–ด๊ฐ€๊ธฐ์— ์•ž์„œ ๊ฐ‘์ž๊ธฐ endl๊ณผ '\n'์˜ ์ฐจ์ด๊ฐ€ ๊ถ๊ธˆํ•ด์ ธ์„œ ์•Œ์•„๋ณด๊ฒŒ๋˜์—ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์•Œ์•„๋ณด๋‹ˆ std::cout

42seoul/projects

[CPP Module] 02

ํ•„์š”ํ•œ ๊ฐœ๋…์ •๋ฆฌ New rules cpp02๋ฅผ ์ง„ํ–‰ํ• ๋•Œ๋Š” ๋”ฐ๋กœ ๋ช…์‹œ๊ฐ€ ๋˜์ง€์•Š์€ ๊ฒฝ์šฐ์—๋Š” 4๊ฐ€์ง€๋ฅผ ๊ธฐ๋ณธ์œผ๋กœ ํฌํ•จํ•˜๊ณ  ์žˆ์–ด์•ผํ•œ๋‹ค๊ณ  ๋ช…์‹œ๊ฐ€ ๋˜์–ด์žˆ๋‹ค. Default constructor ( ๊ธฐ๋ณธ ์ƒ์„ฑ์ž ) ํ•ด๋‹น ํด๋ž˜์Šค์˜ ๊ฐ์ฒด๊ฐ€ ์ธ์Šคํ„ด์Šคํ™”๋  ๋•Œ ์ž๋™์œผ๋กœ ํ˜ธ์ถœ๋˜๋Š” ํŠน์ˆ˜ํ•œ ์ข…๋ฅ˜์˜ ๋ฉค๋ฒ„ ํ•จ์ˆ˜ (์ƒ์„ฑ์ž๋กœ ์ง€์ •์„ ํ• ๋ ค๋ฉด class๋ช…๊ณผ ๊ฐ™์€ ์ด๋ฆ„์œผ๋กœ ํ•จ์ˆ˜๋ฅผ ์ƒ์„ฑํ•ด์•ผํ•œ๋‹ค. ๋ฐ›๋Š”์ธ์ž x) class Fixed { private: intvalue; static const int integer = 8; public: // **Default constructor** Fixed(); } ๊ฐ์ฒด๊ฐ€ ๋งŒ๋“ค์–ด์งˆ๋•Œ Default constructor๊ฐ€ ํ˜ธ์ถœ๋˜๊ณ  ๊ทธ๊ฒƒ์— ํ•ด๋‹น๋˜๋Š” ๋‚ด์šฉ์ด ์‹คํ–‰๋œ๋‹ค. Copy constructor ( ๋ณต์‚ฌ ์ƒ์„ฑ์ž )..

42seoul/projects

[CPP Module] 01

ํ•„์š”ํ•œ ๊ฐœ๋…์ •๋ฆฌ ex00 ์ƒ์„ฑ์ž (Constructor) ์ƒ์„ฑ์ž (Constructor) ํ•ด๋‹น ํด๋ž˜์Šค์˜ ๊ฐ์ฒด๊ฐ€ ์ธ์Šคํ„ด์Šคํ™”๋  ๋•Œ ์ž๋™์œผ๋กœ ํ˜ธ์ถœ๋˜๋Š” ํŠน์ˆ˜ํ•œ ์ข…๋ฅ˜์˜ ๋ฉค๋ฒ„ ํ•จ์ˆ˜ ์†Œ๋ฉธ์ž (Destructor) ์†Œ๋ฉธ์ž (Destructor) ๊ฐ์ฒด๊ฐ€ ์†Œ๋ฉธ๋  ๋•Œ ์ž๋™์œผ๋กœ ์‹คํ–‰๋˜๋Š” ํด๋ž˜์Šค์˜ ๋ฉค๋ฒ„ ํ•จ์ˆ˜ 2๊ฐ€์ง€์— ๊ฐœ๋…์— ๋Œ€ํ•ด์„œ ๋ฐฐ์›Œ ๋ณผ ์ˆ˜ ์žˆ๋˜ ํŒŒํŠธ ex01 ์ด์ „์— ๋งŒ๋“ค์—ˆ๋˜ zombie class๋“ค์„ ๋ฐฐ์—ด๋กœ๋„ ์‚ฌ์šฉํ•ด๋ณด๊ธฐ. ex02 ์ฐธ์กฐ๋ผ๋Š” ๊ฒƒ์„ ์‚ฌ์šฉํ• ์ค„ ์•„๋Š”์ง€ ๋ฌผ์–ด๋ดค๋˜ ํŒŒํŠธ std::string str = "HI THIS IS BRAIN"; std::string* PTR = &str; std::string& REF = str; ex03 gettype() ํ•จ์ˆ˜๋Š” ์ „๋‹ฌ๋ฐ›์€ ๋ณ€์ˆ˜์˜ ํƒ€์ž…์„ ๋ฐ˜ํ™˜ (const ํ˜•์‹) settype(..

42seoul/projects

[CPP Module] 00

๊ฐœ๋… ์ •๋ฆฌ ex00 ์ „์ฒด์ ์œผ๋กœ cpp๋ฅผ ๋“ค์–ด๊ฐ€๊ธฐ์ „์— ํŠœํ† ๋ฆฌ์–ผ ๋А๋‚Œ. ์ž…๋ ฅ๋“ค์–ด์˜ค๋Š” ๋ชจ๋“  ์†Œ๋ฌธ์ž๋“ค์„ ๋Œ€๋ฌธ์ž๋กœ ๋ฐ”๊ฟ”์„œ ์ถœ๋ ฅ์„ ํ•ด์ฃผ๋ฉด ๋œ๋‹ค. $>./megaphone "shhhhh... I think the students are asleep..." SHHHHH... I THINK THE STUDENTS ARE ASLEEP... $>./megaphone Damnit " ! " "Sorry students, I thought this thing was off." DAMNIT ! SORRY STUDENTS, I THOUGHT THIS THING WAS OFF. $>./megaphone * LOUD AND UNBEARABLE FEEDBACK NOISE * $> ex01 PhoneBook์— ๊ฒฝ์šฐ์—๋Š” class ํ˜•์‹์œผ๋กœ..

moaoh
'42seoul/projects' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก (2 Page)