π Language
[C++] OOP μλ©Έμμ virtual ν€μλ
κ°μ²΄μ§ν₯μ νΉμ± μ€ λ€νμ±μ κ°λ μ μ μ©ν κ²μ΄λ€. λ€νμ±μ κ°κ°μ κ°μ²΄λ₯Ό ꡬλΆνκΈ° μν΄ ν¨μμ μ°κΈ°λ νμ§λ§ μλ©Έμμλ μ¬μ©λλ€. ν΄λμ€ λ΄ μλ©Έμμλ μ virtual ν€μλκ° λΆμκΉ? λ¨Όμ , μμμλ 3κ°μ§ κ΄κ³κ° μ‘΄μ¬νλ€. is-a: λ°μ΄ν° νμ λΆλͺ¨ ν΄λμ€λ‘ μ μΈνκ³ μμ±μ μμ ν΄λμ€λ‘ ν λΉνλ€. λΆλͺ¨ ν΄λμ€μ λ³μμ ν¨μλ§ νΈμΆν μ μλ€. λ§μ½, μμ ν΄λμ€μ Override ν ν¨μκ° μ‘΄μ¬νλ€λ©΄ κ·Έ ν¨μλ νΈμΆ κ°λ₯νλ€. has-a: μμ κ΄κ³λ‘μ λ€λ₯Έ κ°μ²΄λ₯Ό ν¬ν¨νμ¬ κ·Έ κ°μ²΄μ κΈ°λ₯(λ³μ, ν¨μ)μ μ¬μ©νλ€. μμ± μ μμλ°μ λΆλͺ¨ ν΄λμ€λΆν° νΈμΆνκ³ μλ©Έ μ μμ ν΄λμ€λΆν° νΈμΆλλ€. is implemented of #include using namespace std; class Has..
[C++] μ μ (Static) λ©€λ² λ³μμ ν¨μ
μ μ λ©€λ² λ³μ static μλ£ν λ³μ μ΄λ¦; νμμΌλ‘ ν΄λμ€ λ°μμ μ΄κΈ°νν΄μΌ νλ€. κ°μ ν΄λμ€ λ΄ λͺ¨λ κ°μ²΄κ° νλμ μ μ λ©€λ² λ³μλ₯Ό 곡μ©μΌλ‘ μ¬μ©νλ€. μ¦ ν΄λμ€ λ΄μ μ μ λ³μμ²λΌ νλνλ€. μ΄λ€ κ°μ²΄μμ λ°κΎΌ μ μ λ©€λ² λ³μ κ°μ μ μ§λλ©° κ°μ ν΄λμ€μ λ€λ₯Έ κ°μ²΄μκ² μν₯μ λ―ΈμΉλ€. λ©λͺ¨λ¦¬ ν λΉμ λ± νλ²λ§ νκ² λμ΄ λ©λͺ¨λ¦¬ μ¬μ© ν¨μ¨μ λμΌ μ μλ€. μ μ λ©€λ² ν¨μ ν΄λμ€μ κ°μ²΄ μμ΄ νΈμΆμ΄ κ°λ₯νλ©° κ°μ²΄μμλ νΈμΆν μ μλ ν¨μλ₯Ό λ§νλ€. privateμΌλ‘ μ μΈν μ μ λ©€λ² λ³μλ₯Ό μ¬μ©ν μ μλ€. #include using namespace std; class A { private: //μ μ λ©€λ² λ³μμ μ΄κΈ°νλ ν΄λμ€ μΈλΆμμ νλ€. static int count; public:..
![[C++] μμ 볡μ¬(Shallow Copy)μ κΉμ 볡μ¬(Deep Copy)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmoHH9%2FbtqEcUN0DUG%2Fxoa7kkkXEKdVBzndiyk2bK%2Fimg.png)
[C++] μμ 볡μ¬(Shallow Copy)μ κΉμ 볡μ¬(Deep Copy)
κΈ°μ‘΄ κ°μ²΄μ κ°μ κ°μ κ°μ§ κ°μ²΄λ₯Ό 볡μ¬ν λ κ° νμμ΄λ μ°Έμ‘° νμμ΄λμ λ°λΌ 볡μ¬κ° λλμ΄μ§λ€. μμ 볡μ¬(Shallow Copy) ν κ°μ²΄μ λͺ¨λ λ©€λ² λ³μμ κ°μ λ€λ₯Έ κ°μ²΄λ‘ 볡μ¬νλλ° κ°μ²΄κ° ν¬μΈν° νμ μ λ©€λ²λ₯Ό κ°κ³ μλ€λ©΄ μ£Όμ κ°λ§ 볡μ¬λλ€. μ΄λ, μλ³Έ κ°μ²΄λ₯Ό μ κ±°ν κ²½μ° μ°Έμ‘°νκ³ μλ ν¬μΈν°λ μ΄λ―Έ μμ ν λ°μ΄ν°λ₯Ό κ°λ¦¬ν€λ λκΈλ§ ν¬μΈν°κ° λ μ μλ€. μ°Έμ‘° νμ κ°μ²΄λ€μ κΈ°λ³Έμ μΌλ‘ λͺ μνμ§ μμΌλ©΄ μμ 볡μ¬κ° μΌμ΄λλ€. κΉμ 볡μ¬(Deep Copy) λͺ¨λ λ©€λ² λ³μλΏλ§ μλλΌ ν¬μΈν° λ³μκ° κ°λ¦¬ν€λ λͺ¨λ κ°μ²΄μ λν΄μλ 볡μ¬λ₯Ό μννμ¬ λ³΅μ¬ν κ°μ²΄μ μ°Έμ‘°λ κ°μ²΄κ° λ 립μ μΌλ‘ μ μ§λλ€. κ° νμ κ°μ²΄λ€μ κΈ°λ³Έμ μΌλ‘ κΉμ 볡μ¬λ₯Ό νλ€. struct Test { char* ptr; }; vo..
[C++] μ€λ²λ‘λ©(Overloding)κ³Ό μ€λ²λΌμ΄λ©(Overriding)
μ€λ²λ‘λ©(Overloding) μ€λ²λ‘λ©μ΄λ ν¨μμ μ΄λ¦μ κ°κ³ 맀κ°λ³μλ₯Ό λ€λ₯΄κ² ν¨μΌλ‘μ¨ λ§€κ° λ³μμ λ°λΌ λ€λ₯Έ ν¨μκ° μ€νλλ κ²μ΄λ€. int add(int a, int b) { return a + b; } // μν¨μ float add(int a, int b) { return a + b; } // μ€λ²λ‘λ© λΆκ°λ₯ float add(int a, float b) { return a + b; } // μ€λ²λ‘λ© κ°λ₯ μ€λ²λΌμ΄λ©(Overriding) μ€λ²λΌμ΄λ©μ΄λ λΆλͺ¨ ν΄λμ€λ‘λΆν° μμλ°μ ν¨μλ₯Ό μ¬μ μνλ κ²μ΄λ€. μμ κ°μ²΄μμ μ€λ²λΌμ΄λ©ν ν¨μλ νΈμΆ μ λ¨Όμ νΈμΆλλ€. λμΌν λ¦¬ν΄ κ°, μ΄λ¦, 맀κ°λ³μλ₯Ό κ°μ ΈμΌ νλ€. #include using namespace std; class Drink { publ..
[C++] Call by valueμ Call by reference
Call by value κ°μ μν νΈμΆ ν¨μ νΈμΆ μ μΈμλ‘ λ³μμ λ³΅μ¬ κ°μ μ λ¬νλ€. μ΄λ 볡μ¬λ μΈμλ ν¨μ μμμ μ§μμ μΌλ‘ μ¬μ©λκΈ° λλ¬Έμ local valueμ μμ±μ κ°μ§λ€. λ°λΌμ ν¨μ μμμ μΈμ κ°μ΄ λ³κ²½λλλΌλ μκ·λ¨ΌνΈ(argument)λ λ³κ²½λμ§ μλλ€. λ©λͺ¨λ¦¬ 곡κ°μμλ λ³λμ μμ 곡κ°μ μμ±λλ―λ‘ ν¨μ μ’ λ£ μ μ¬λΌμ§λ€. Call by reference μ°Έμ‘°μ μν νΈμΆ ν¨μ νΈμΆ μ μΈμλ‘ λ³μμ λ νΌλ°μ€λ₯Ό μ λ¬νλ€. λ°λΌμ ν¨μ μμμ μΈμ κ°μ΄ λ³κ²½λλ©΄ μκ·λ¨ΌνΈλ‘ μ λ¬λ κ°μ²΄μ κ°λ λ³κ²½λλ€. μ μΈκ³Ό λμμ μ΄κΈ°νν΄μΌ νκ³ μ΄κΈ°νλ νμλ λ€λ₯Έ λ³μλ₯Ό μ°Έμ‘°ν μ μλ€. #include using namespace std; void func_by_value(int a, i..
![[C++] STL 컨ν
μ΄λ(Containers)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbGoZUd%2FbtqDQbD1ZPD%2FJS02aF3dvHf3YQCqpu63p1%2Fimg.png)
[C++] STL 컨ν μ΄λ(Containers)
1. μμ(μνμ€) 컨ν μ΄λ λ°μ΄ν°λ₯Ό μ νμΌλ‘ μ μ₯νλ 컨ν μ΄λλ‘ μ°κ΄ 컨ν μ΄λμ λΉν΄ κ²μ μ±λ₯μ΄ μ’μ§ μλ€. 1) Vector κ°μ₯ κΈ°λ³Έμ μΈ μ»¨ν μ΄λμ΄λ€. μΌλ° λ°°μ΄μ²λΌ μ°μμ μΈ λ©λͺ¨λ¦¬μ μ μ₯λκ³ νμ₯/μΆμκ° κ°λ₯ν λμ λ°°μ΄λ‘ ꡬνλμ΄ μλ€. iterator λΏλ§ μλλΌ indexλ‘λ μ κ·Όμ΄ κ°λ₯νμ¬ κ°λ³ μμμ λν μ κ·Ό μλκ° λΉ λ₯΄λ€. 2) Deque vectorμ λΉμ·ν 컨ν μ΄λμ΄μ§λ§, νλμ λ©λͺ¨λ¦¬ λΈλ‘μ΄ μλ μ¬λ¬ λ©λͺ¨λ¦¬ λΈλ‘μ λλμ΄ μ μ₯λλ€. Random access iteratorλ₯Ό ν΅ν indexλ‘ μ κ·Όμ΄ κ°λ₯νλ€. 3) List λΉμ°μμ μΈ λ©λͺ¨λ¦¬μ μ μ₯λλ€. indexλ‘ μ κ·Όμ΄ λΆκ°λ₯νλ€. μ κ·Όμ νκΈ° μν΄μλ μ ν νμμ΄ νμνλ€. λ³΄ν΅ μ½μ , μμ νλ μ°μ°μ΄ λ§μ λ μ¬μ©νλ€...