목록분류 전체보기 (106)
도순씨의 코딩일지
🌼 Point 클래스 템플릿과 배열 클래스 템플릿 다음과 같은 형태는 생소하지만 템플릿 클래스의 객체를 저장할 수 있습니다. 1 BoundCheckArray oarr(50); cs 만약 저장대상이 Point 템플릿 클래스 객체가 아닌 Point형 포인터라면 다음과 같이 표현 가능합니다. 1 BoundCheckArray oparr(50); cs 예제를 통해서 직접 살펴봅시다. ⭐️ PointTemplate.h 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 #ifndef __POINT_TEMPLATE_H_ #define __POINT_TEMPLATE_H_ template class Point{ private: T xpos, ypos; public: Po..
🌼 함수를 대상으로 템플릿 이해하기 함수 템플릿은 함수를 만들어내는 역할을 합니다. 함수의 기능은 결정되어 있지만, 자료형은 결정되어 있지 않습니다. 그러므로 자료형을 결정해주어야 합니다. 다시 한 번 말하자면 함수 템플릿은 함수를 만드는 도구입니다. 자바의 제네릭과 유사하죠. 예시를 통해서 함수 템플릿을 이해해봅시다. 1 2 3 int Add(int num1, int num2){ return num1 + num2; } cs 위 함수의 정보를 요약해보면 다음과 같습니다. 💡 함수의 기능 : 덧셈 💡 대상 자료형 : int형 데이터 이러한 함수를 만들어낼 수 있는 템플릿은 다음과 같이 정의됩니다. 1 2 3 T Add(T num1, T num2){ return num1 + num2; } cs 위 함수의 정..
🌼 디폴트 대입 연산자 대입 연산자의 대표적인 특성은 다음과 같습니다. 💡 정의하지 않으면 디폴트 대입 연산자가 삽입된다. 💡 디폴트 대입 연산자는 멤버 대 멤버의 복사(얕은 복사)를 진행한다. 💡 정의하지 않으면 디폴트 대입 연산자가 삽입된다. pos2 = pos1은 멤버함수방식의 오버로딩을 기준으로 다음의 형태로 해석됨을 알 수 있습니다. 1 pos2.operator = (pos1); cs ⭐️ FirstOperationOverloading.cpp 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 #include using..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/dqJyaI/btqHsa13Ody/xGSK2P6qFGrnxpmOwpFBB1/img.png)
🌼 operator+ ❓ ⭐️FirstOperationOverloading.cpp 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 #include using namespace std; class Point{ private: int xpos, ypos; public: Point(int x = 0 , int y = 0) : xpos(x), ypos(y) {} void ShowPosition() const{ cout
먼저 단순한 코드를 하나 살펴보도록 하겠습니다. 🌼 멤버함수의 위치 ⭐️RealObjUnder1.cpp 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 #include using namespace std; class Data{ private: int data; public: Data(int num) : data(num) {} void ShowData() { cout
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bX4yyy/btqHmztFsK1/uVgkCrNPiR86oVXKto1A50/img.png)
🌼 객체 포인터 변수 : 객체의 주소 값을 저장하는 포인터 변수 C++에서는 클래스를 기반으로도 포인터 변수를 선언할 수 있습니다. Person 객체의 주소 값 저장을 위해서 다음과 같은 포인터 변수를 선언할 수 있습니다. 1 2 Person * ptr; // 포인터 변수 선언 ptr = new Person() // 포인터 변수의 객체 참조 cs Person형 포인터는 Person 객체 뿐만 아니라, Person을 상속하는 유도 클래스의 객체도 가리킬 수 있습니다. 다음 코드를 살펴봅시다. 1 2 3 class Student : public Person{ .... }; cs class Student가 Person 클래스를 상속하고 있습니다. 1 Person * ptr = new Student(); cs ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bYqrKc/btqG7RI94D4/4ThEnZsxfJ6KeZnGLoV3Xk/img.png)
🌼 protected 선언 C++의 접근제어 지시자에는 private, protected, public 이렇게 세 가지가 있습니다. 이들이 허용하는 범위는 다음과 같습니다. private < protected < public public이 허용하는 범위가 가장 넓고, private가 허용하는 접근 범위가 가장 좁습니다. protected는 private와 매우 유사하지만 차이점이 있습니다. protected의 이해를 위해서 다음 클래스를 살펴봅시다. 1 2 3 4 5 6 7 8 9 10 11 class Base{ private: int num1; protected: int num2; public: int num3; void ShowData(){ cout
🌼 상속의 개념 상속은 기존에 정의해 놓은 클래스의 재활용을 목적으로 합니다. 먼저 예제를 하나 살펴봅시다. ⭐️ EmployeeManger1.cpp 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 #include #include using namespace std; class PermanentWorker{ private: char name[100]; int salary; public: PermanentWorker(char * name..