42seoul/projects
2023.09.13
์ค๋ฒ๋ก๋ฉ์ด๋ ๋ฐํ์ ๋คํ์ฑ์ผ๋ก๋ ๋ถ๋ฆฐ๋ค. 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
2023.09.13
๊ธฐ๋ณธ ๊ท์น 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
2023.09.02
ํ๋์ ํ์
์ ์ฌ๋ฌ ๊ฐ์ฒด๋ฅผ ๋์
ํ ์ ์๋ ์ฑ์ง ๋คํ์ฑ์ด๋ผ๋ ๊ฐ๋
์ ์๊ธฐ์ ์ ๋คํ์ฑ๊ณผ ๋ฐ์ ํ๊ฒ ๊ด๋ จ์ด ์๋ ์์์ด๋ผ๋ ๊ฐ๋
์ ์ดํด๋ฉด ๋ ์ฝ๊ฒ ์ฌ์ฉํ ์ ์๋ค. Inheritance ( ์์ ) ๋ถ๋ชจํด๋์ค์ ์๋ ๋ฉค๋ฒ ํจ์๋ ๋ฉค๋ฒ ๋ณ์๋ค์ ๋ฌผ๋ ค ๋ฐ์์ ์๋ก์ด ํด๋์ค๋ฅผ ๋ง๋๋ ๊ฒ class Parent { public: ... }; class Child : public Parent { public: ... } ํด๋์ค์์๋ ์์๊ฐ์ด ๋ค๋ฅธ ํด๋์ค๋ฅผ ์์๋ฐ์์ ์ฌ์ฉํ๋ ๊ฒ์ด ๊ฐ๋ฅํ๋ค. parent๋ผ๋ class๋ฅผ child๋ผ๋ ํด๋์ค๊ฐ ๋ฐ์์ ์ฌ์ฉํ๋ ๋ฐฉ์์ด๋ค. ( ์ด๋ ์์์ ๋ฐ๋ ํด๋์ค๋ฅผ ์์ํด๋์ค๋ผ๊ณ ์ด์ผ๊ธฐํ๊ณ ์์์ ํด์ฃผ๋ ํด๋์ค๋ฅผ ๋ถ๋ชจํด๋์ค๋ผ๊ณ ์ด์ผ๊ธฐํ๋ค. ) ์์ ๊ฐ์ ๋ฐฉ์์ผ๋ก ์์์ ๋ฐ์ผ๋ฉด ์์์ ํด..
42seoul/projects
2023.09.02
์ฐ์ฐ์ ์ค๋ฒ๋ก๋ฉ์ ์์๊ฐ๊ธฐ์ ์ ์ฐ๋ฆฌ๋ ํด๋์ค์์์ ์ฐ์ฐ์์ฌ์ ์๋ผ๋ ๊ฐ๋
์ ๋ํด์ ์์์ผํ๋ค. ์ฐ์ฐ์ ์ฌ์ ์ 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
2023.07.29
ํ์ํ ๊ฐ๋
์ ๋ฆฌ ๊ธฐ๋ณธ ๊ท์น Orthodox Canonical Form module 02์ ๋ง์น๊ฐ์ง๋ก ์์ฑ์ ๋ณต์ฌ ์์ฑ์ ๋ณต์ฌ ํ ๋น ์์ฑ์ ์๋ฉธ์ ์ด 4๊ฐ์ง๋ฅผ ํฌํจํ๊ณ ์์ด์ผํ๋ค. include guards ์ฝ๋ ๋ถํ ์ ์ํด ํ์ํ ๊ฒฝ์ฐ ์ถ๊ฐํ์ผ ์ฌ์ฉ๊ฐ๋ฅ C++ ์ญ์ new๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฉ๋ชจ๋ฆฌ ๋์๊ฐ ๋ฐ์๋ ์ ์๊ธฐ๋๋ฌธ์ ๋ฉ๋ชจ๋ฆฌ์ ๋ํ ๋์๋ฐฉ์ง๋ฅผ ํด์ค์ผํ๋ค ex00 endl ๊ณผ ‘\n’ ์ฐจ์ด์ ex00์ ๋ค์ด๊ฐ๊ธฐ์ ์์ ๊ฐ์๊ธฐ endl๊ณผ '\n'์ ์ฐจ์ด๊ฐ ๊ถ๊ธํด์ ธ์ ์์๋ณด๊ฒ๋์๋ค. ๊ทธ๋์ ์์๋ณด๋ std::cout
42seoul/projects
2023.07.25
ํ์ํ ๊ฐ๋
์ ๋ฆฌ 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
2021.09.16
ํ์ํ ๊ฐ๋
์ ๋ฆฌ 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
2021.09.15
๊ฐ๋
์ ๋ฆฌ 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 ํ์์ผ๋ก..