본문 바로가기 메뉴 바로가기

nodeal dev story

프로필사진
  • 글쓰기
  • 관리
  • 태그
  • 방명록
  • RSS

nodeal dev story

검색하기 폼
  • 분류 전체보기 (59)
    • 낙서 (13)
    • 간단 문제 풀이 (7)
    • C++ (12)
      • C to C++ (10)
    • Java (1)
    • Android (22)
      • AOKP (3)
      • Carbon (2)
      • CyanogenMod (12)
      • Dokdo-project (2)
      • Recovery (1)
    • 일상 (4)
  • 방명록

2019/01 (8)
[C to C++] friend, 연산자 오버로딩

추가되는 기능 C++ class/struct에서는 멤버 변수를 선언과 함께 초기화할 수 있다. class Object { private: int value = 0; public: void print() { std::cout

C++/C to C++ 2019. 1. 31. 12:47
[C to C++] 함수 오버로딩

추가되는 사항 C++에서 함수를 구별하는 방법은 함수의 이름 뿐만 아니라 인자값으로도 구별한다. class Object { public: void foo() { std::cout

C++/C to C++ 2019. 1. 31. 10:04
[C to C++] 생성자, 소멸자, 복사 생성자

추가되는 사항명시적으로 초기화, 소멸 함수를 정의하지 않고 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++/C to C++ 2019. 1. 29. 16:49
[C to C++] 구조체를 클래스로 재정의하기

추가되는 사항 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 to C++ 2019. 1. 29. 16:46
[C to C++] C++ 스타일에 맞춰 vector 작성하기

추가되는 사항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 to C++ 2019. 1. 28. 19:39
[C to C++] C 스타일로 vector를 작성해보자

프로젝트 목표 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 to C++ 2019. 1. 28. 19:31
[C++] 안전한 포인터 설계

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++ 2019. 1. 26. 18:09
[C++] Rule of three/five/zero

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 단일 책임 원칙에 따라 새로운 소멸자, 생성자, 할당연산자가 정의되어..

C++ 2019. 1. 5. 14:32
이전 1 다음
이전 다음
공지사항
최근에 올라온 글
  • 세상에서 가장 쓸모 없는..
  • [C to C++] 상속 - 순수 가..
  • [C to C++] 상속 - 생존주..
  • [C to C++] 상속
최근에 달린 댓글
  • 스타포스가 5성까지밖에 입력..
  • 스타포스가 5성까지밖에 안되..
Total
23,839
Today
103
Yesterday
102
링크
  • No DEAL's Dev Post
TAG
  • g2 korea
  • 포인터
  • 순수 가상함수
  • dokdo project
  • 객체지향
  • LG
  • C++
  • cyanogenmod
  • rule_of_five
  • C++ 가상함수
  • nodeal
  • C++ virtual
  • C
  • d802
  • OOP
  • linaro
  • c++ 상속
  • rule_of_three
  • f320k
  • C++ 업캐스팅
  • dokdo-project
  • f320s
  • C++ 소멸자 virtual
  • c++11
  • CM10.2
  • dokdo 4.0.3
  • c++ struct
  • CM11
  • G2
  • vector
more
«   2019/01   »
일 월 화 수 목 금 토
    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    
글 보관함
  • 2019/08 (1)
  • 2019/02 (4)
  • 2019/01 (8)
  • 2018/06 (4)
  • 2018/05 (1)

Blog is powered by Tistory / Designed by Tistory