본문 바로가기

main70

[visual studio]디버깅 디버깅 visual studio의 디버깅을 사용하면 프로그램의 코드를 한 줄 한 줄 실행하여 변수의 값 등을 확인할 수 있습니다. 디버깅의 전제조건으로는 프로그램의 빌드가 성공해야 합니다. 즉, F7 키를 통해 빌드를 실행하여 빌드가 성공하면 디버깅을 할 수 있습니다. 만약 빌드가 실패하며 디버깅을 할 수 없습니다. 단축키 -F9 커서가 있는 위치에 중단점(break point) 설정 / 해제 위에서 빨간색 네모 안에 커서가 위치하고 있습니다. 이렇게 커서가 위치하고 있는 위치에서 F9 키를 누르면 왼쪽에 빨간색 동그라미가 생기면서 중단점이 설정됩니다. 이렇게 중단점이 설정된 상태에서 한 번 더 F9 키를 누르면 중단점이 해제됩니다. 그리고 F9키가 아닌 마우스 좌클릭으로 빨간색 동그라미가 있는 곳에 클.. 2018. 2. 6.
[자료구조][C++]버블 정렬 버블 정렬 버블 정렬은 가장 큰 수를 맨 마지막으로 이동시키면서 정렬하는 방법입니다. 즉 메모리에 3 9 5 1 6 2 8 4 7 이렇게 저장되어 있다면 0번 index와 바로 그다음 index인 1번 index를 비교하여 앞의 index의 값이 더 크면 두 수를 swap 하고 아니면 그대로 둡니다. 그리고 비교 index의 값을 1씩 증가시켜 1번 index와 2번 index를 비교합니다. 이런 비교를 "배열의 길이 - 1" 만큼 반복하면 맨 마지막 index에 가장 큰 수가 위치하게 됩니다. 3 5 1 6 2 8 4 7 9 이렇게 가장 큰 수인 9가 맨 마지막 index에 위치하게 됩니다. (배열의 길이가 n이라고 가정) 이러한 비교를 또 "배열의 길이 - 1" 만큼 반복하면 되는데 한 번 수행할 때.. 2018. 2. 6.
[C++]Class의 기본 형태 Class의 기본 형태 class를 구현할 때 기본적인 모습은 다음과 같습니다. class C_DATA { private: ... public: C_DATA(); C_DATA(const C_DATA &) = delete; const C_DATA& operator=(const C_DATA &) = delete; virtual ~C_DATA();// class가 상속을 받는 다면 추가되어야할 내용 public: void init(); void release(); void setData(int nData); int getData(); }; 생성자는 기본적인 초기화 작업을 하며 이후 초기 값 세팅은 init() 함수를 따로 구현하여 사용합니다. 소멸자의 경우 아무 일도 하지 않도록 하며 굳이 정의하지 않아도 되.. 2018. 1. 30.
[C++]순수 가상함수와 추상 클래스, 인터페이스(interface) 순수 가상함수 class 상속에서 virtual 키워드를 통해 오버라이딩 함수(가상함수)를 구현 class 상속의 다형성을 구성했는데, 여기서 문제점이 하나 발생하게 됩니다. 부모 class에서 구현한 가상함수를 자식 class가 반드시 구현해야 한다는 강제성이 없다는 것입니다. 즉, 부모 class에서 가상함수를 구현했지만 자식 class에서 이 가상함수를 오버라이딩 하지 않아도 된다는 것입니다. 이렇게 되면 class 상속을 통해 다형성을 구성하지 못합니다. 이 때문에 등장한 것이 순수 가상함수입니다. class C_PARENT { public: virtual void func() abstract; //virtual void func() = 0; //virtual void func() = NULL; .. 2018. 1. 30.
[C++]Class 상속 Class 상속 class에서 상속은 상위 개념을 하위 개념이 상속받아서 사용하는 것입니다. 그리고 상속을 사용하기 위해서는 추상화와 구체화의 구분이 명확해야 합니다. 따라서 class 상속을 공통적인 부분을 구현하여 상속받아 사용한다는 것은 틀린 개념이고, 이렇게 사용할 경우 추후에 수정이나 추가를 해야 할 경우 구현해야 하는 부분이 많아지고 복잡해집니다. Class 상속 사용 방법 상위 class(부모 class)를 하위 class(자식 class)가 상속받기 위해서는 하위 클래스 이름 옆에 ' : '와 접근 제한자, 그리고 상속할 class 이름을 붙여주시면 됩니다. class C_PARENT { ... }; class C_CHILD : public C_PARENR { ... }; Class 상속의.. 2018. 1. 30.