추가되는 사항명시적으로 초기화, 소멸 함수를 정의하지 않고 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기법을 활용한 포인터의 관리이다. ..
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 단일 책임 원칙에 따라 새로운 소멸자, 생성자, 할당연산자가 정의되어..
스타포스 역계산기의 v1.1.4가 플레이스토어를 통해 배포되었습니다.플레이스토어 링크 이전 버전과 변경점은 다음과 같습니다.1. 130제와 그 이하 무기를 계산할 수 있습니다. 이번 추가 내용은 130제 이하의 무기류 계산인데요, 140제까지는 25성까지의 스타포스가 적용되지만 138 미만의 아이템부터는 스타포스 수의 제약이 걸려있습니다. 130제는 15성부터 6, 7, 7, 8, 9가 오르고 20성이 최대입니다.그에 반해 120제 이하는 15성이 최대이므로 공격력 계산을 추가할 필요가 없습니다. 하지만 레벨제한이 낮아짐에 따라 그 스타포스만 적용해야하는 것이 아닙니다. 바로 주문의 흔적을 통한 강화 수치가 낮아지는 것인데요, 75미만의 무기는 100%로 1, 70%로 2, 30%로 3, 15%로 5가 ..
- Total
- Today
- Yesterday
- Java
- f320s
- f320k
- dokdo 4.0.3
- c++ 상속
- vector
- 객체지향
- g2 korea
- c++ struct
- cyanogenmod
- nodeal
- C++
- C++ 업캐스팅
- rule_of_five
- OOP
- dokdo project
- C
- c++11
- G2
- PipelineContext
- linaro
- d802
- Kotlin
- LG
- rule_of_three
- CM10.2
- 포인터
- CM11
- dokdo-project
- inline class
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |