추가되는 사항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기법을 활용한 포인터의 관리이다. ..
C++을 사용하면서 자료를 다루는 class는 수도 없이 많이 사용될 것이다. 하지만 그 자료가 완전히 메모리에 안전한 인스턴스일 수도 있고, raw pointer일 수도 있을 것이다. 이 때에 맞추어 각 class를 구성하는 방법에 대하여 알아보자. Rule of zero : 소멸자, 복사/이동 생성자, 복사/이동 할당연산자가 정의되어있는 class의 wrapper class는 다음의 꼴을 가진다. class Test { private: std::string s; public: Test(const std::string &s) : s(s) {} }; 소멸자, 복사, 이동 생성자, 복사, 이동 할당연산자가 정의되어있는 class는 OOP 단일 책임 원칙에 따라 새로운 소멸자, 생성자, 할당연산자가 정의되어..
- Total
- Today
- Yesterday
- d802
- inline class
- dokdo 4.0.3
- c++11
- vector
- 포인터
- Java
- f320s
- rule_of_five
- rule_of_three
- cyanogenmod
- dokdo-project
- CM11
- g2 korea
- c++ 상속
- OOP
- nodeal
- C
- linaro
- 객체지향
- CM10.2
- f320k
- LG
- c++ struct
- C++ 업캐스팅
- Kotlin
- G2
- dokdo project
- C++
- PipelineContext
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |