추가되는 기능 사용되는 타입이 다른 타입으로도 같은 수행이 보장되어 일반화할 수 있을 때 template을 사용한다. int add(int a, int b) { return a + b; } float add(float a, float b) { return a + b; } int sum_int = add(10, 20); // = 30 float sum_float = add(10.5f, 20.5f); // = 31 template T add(T a, T b) { return a + b; } int sum_int = add(10, 20); float sum_float = add(10.5f, 20.5f);template을 사용할 경우 코드의 재사용성이 높아지며 같은 코드를 반복적으로 작성할 필요가 없어진다. 이..
추가되는 사항명시적으로 초기화, 소멸 함수를 정의하지 않고 class의 객체가 생성, 소멸할 때 호출되는 함수를 활용한다. Raw pointer를 다루는 class가 복사될 때 pointer 해제의 문제를 해결한다. 같은 class의 값으로 선언과 초기화를 동시에 할 때 호출되는 복사 생성자를 정의한다.목표Constructor와 destructor를 정의한다. 객체의 복사 과정을 이해한다. Copy constructor를 정의한다.디자인다음 생성자가 추가된다.vector()vector(const vector& v) 소멸자가 추가된다.~vector() 다음 멤버 함수가 삭제된다.initialize()finalize() 생성자와 소멸자class Object { private: int data; public:..
추가되는 사항 C++에서 명시적으로 멤버 변수를 가려야할 경우 class를 활용한다. struct와 다르게 class는 기본 접근 지정자가 private이고 외부에서 접근을 허용할 경우 public으로 지정해야한다. class Object { int pri; public: int pub; }; Object o; o.pri = 10; // Error o.pub = 10; // OK class 외부에서 멤버 변수 또는 함수에 접근을 막을 경우 private 기호를 활용한다. class Object { private: int pri; void foo() {} public: int pub; void bar() {} }; Object o; o.pri = 10; // Error o.foo(); // Error o...
추가되는 사항C++ 구조체에는 멤버 함수를 추가할 수 있다. C++ 구조체의 멤버 함수가 멤버 변수를 수정하지 않을 때에는 const 기호를 추가할 수 있다. struct Object { int v; int foo() const { return v; } int bar() { return v; } }; const Object o; o.foo(); // OK o.bar(); // Error: Non-const member functionC++에서 raw pointer를 동적 할당, 해제할 때는 new-delete을 사용한다. > malloc, free는 더 이상 사용되지 않는다. constexpr을 이용해서 상수를 정의한다. > 더 이상 #define을 이용해서 상수를 정의하지 않는다. C++에서 raw p..
프로젝트 목표 C언어를 배우고 나서 C++ 또는 OOP로 발전시키고자 하는 모든 개발자들 기본적인 C 문법은 모두 알고 있는 상태여야하며 그렇지 않을 경우 이해에 어려움이 있을 수 있음. 목표C style로 vector 작성디자인vector는 다음의 멤버 변수를 갖는다.int* data 원소가 저장될 공간 int capacity data의 크기 int length 저장된 원소의 수다음의 helper 함수가 필요하다.int ensure_capacity(vector* v, int to_add) v.data에 to_add만큼의 공간이 남아있는지 확인한다. 남아있다면 1을, 그렇지 않다면 0을 반환한다. void increase_capacity(vector* v) v.data를 v.capacity의 두 배로 재..
C에서 포인터의 난관이라면 '포인터의 개념' 자체에서 비롯된 문제였다면C++에서 포인터로 인한 문제는 많은 경우 할당과 해제로 인한 것이라고 보인다. 다음의 예시를 보자.void foo() { int* ptr = new int; bar(ptr); // throws exception delete ptr; } bar함수는 int 포인터를 인자값으로 받아 무언가를 처리하는 함수이다. 이때 잘못된 값이 들어가 bar가 예외를 throw했다면 delete이 작동할까? 우린 C에서 malloc과 free, C++에서 new와 delete이 한 쌍이 되도록 배웠다. 하지만 분명 쌍을 맞췄지만 의도찮게 delete까지 도달되지 않는 경우, 어떻게 해야할까? 이때 활용되는 것이 RAII기법을 활용한 포인터의 관리이다. ..
- Total
- Today
- Yesterday
- cyanogenmod
- OOP
- Kotlin
- linaro
- StructuredTaskScope
- 포인터
- d802
- f320k
- C
- Java
- C++
- C++ 업캐스팅
- nodeal
- dokdo project
- dokdo 4.0.3
- c++ 상속
- LG
- G2
- 객체지향
- CM10.2
- rule_of_three
- c++ struct
- c++11
- f320s
- CM11
- dokdo-project
- rule_of_five
- g2 korea
- vector
- 기타 ETF
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |

