본문 바로가기

C++87

C++ 기초 : 클래스 (2) 아래 코드는 가변 배열을 구조체로 구현한 것입니다. 가변 배열을 위한 함수들을 보면 공통적으로 어떤 가변 배열에 해당 함수를 적용할지선택하기 위해 가변 배열의 주솟값을 받고 있습니다.  그런데 클래스의 경우 멤버 함수 SetInt를 보면 인자로 값 하나만 받고 있습니다. 그럼 main 함수에서 cMy형 객체 3개를 만든 후SetInt 함수를 호출합니다. SetInt 함수를 어떤 객체에적용할 것인지 컴파일러는 어떻게 아는 걸까요? 객체마다 주솟값이 존재할 것이고 이 주솟값을 찾아가서그곳에 있는 객체에 SetInt 함수를 적용하겠죠.  그럼 그 주솟값은 어디에 있을까요? 바로 13번째 줄에서 볼 수 있듯이 this라는 키워드에 있습니다. 이를 this 포인터라.. 2024. 4. 13.
C++ 기초 : 클래스 (1) C++ 언어에서는 기존 C 언어에서는 없던클래스라는 개념이 추가되었습니다. 클래스는 사용자가 정의하는 자료형입니다.C 언어에서의 구조체와 같은 역할이죠. 물론 C++ 환경에서도 구조체를 사용할 수 있습니다.C++ 문법에서는 구조체의 이름을 재정의하여 사용할필요 없이 struct 키워드를 통해 바로 사용할 수 있습니다.       클래스도 구조체와 마찬가지로 멤버로 구성되는데해당 멤버를 공개할지 공개하지 않을지 선택할 수 있습니다.private로 선언된 멤버는 공개하지 않고,public으로 선언된 멤버는 공개됩니다. 예를 들어 cMy라는 클래스를 정의하였고해당 클래스의 멤버는 int형 변수 m_i와 float형 변수 m_f가 있습니다. m_i는 priv.. 2024. 4. 13.
C++ 기초 : 리스트 (3) Linked List(연결형 리스트)와가변 배열의 큰 차이점은 메모리의 구조입니다. 가변 배열은 메모리가 연속적으로 할당되어 있고연결형 리스트는 메모리의 공간이 모두 떨어져 있으나포인터를 통해 연결하고 있는 형태이죠. 그래서 가변 배열은 n번째 데이터에 접근하는 게 쉽습니다.메모리가 연속적으로 할당되어 있어 3번째 데이터에접근하고 싶다면 주소 연산(+3)을 통해 접근하기가 용이하죠. 그러나 단점도 있습니다. 만약 가변 배열의 맨 앞 공간에 데이터를 추가하고 싶다면 기존 데이터를 모두 뒤로 한 칸씩복사하여 붙여넣고 맨 앞에 공간이 생기면 그제서야 비로소데이터를 넣을 수 있죠. 만약 데이터가 1000개가 있다고 하면 이 1000개의 데이터를하나씩 뒤로 밀고 데이터를 넣어야 하.. 2024. 4. 12.
C++ 기초 : 리스트 (2) 아래 코드는 연결형 리스트를 구현하기 위해구조체를 선언한 LinkedList.h 파일입니다. 6번째 줄이 오류가 발생하는 부분입니다. 그래서 아래 코드로 작성해야 하죠. 이유는 구조체를 사용할 때 'struct _tagNode'의 형태로 사용해야 했는데 편하게 쓰기 위해 구조체 선언 마지막에 별명을 붙여줬죠.위 코드에서는 'tNode'라는 별명을 붙여줬네요. 이러다 보니 6번째 줄은 아직 tNode라는 것이 만들어지기 전입니다.그래서 멤버를 선언할 때 별명을 바로 사용하지 못하고원래 이름인 'struct _tagNode' 형태로 멤버를 선언해야 하는 것이죠.      이제 main.cpp에서  연결형 리스트의 역할을 할 객체를 선언하겠습니다. 이를.. 2024. 4. 11.
C++ 기초 : 함수 포인터 Bubble Sort 함수를 만들어 어떤 배열을 정렬한다고 합시다. BubbleSort(배열); 이런 식으로 함수를 호출하고 배열을Bubble Sort 방식으로 정렬하게 될 겁니다.  근데 배열을 어떤 방식으로 정렬할지선택할 수 있으면 더 좋지 않을까요? 예를 들어  Sort(배열, 정렬방식); 이렇게 말이죠. 함수 포인터를 이용하면예시로 든 코드처럼 사용이 가능합니다.  아래 코드는 함수 포인터를 간단하게 구현한 것입니다. Test 함수가 있습니다.해당 함수는 매개변수로 아무것도 받지 않네요.(매개변수가 없을 경우, void를 적어이를 명시해 주거나 그냥 빈 괄호로 둡니다.)  14번째 줄이 바로 함수 포인터입니다. Test 함수의 반환값이 없.. 2024. 4. 8.
C++ 기초 : 버블 정렬 버블 정렬(Bubble Sort)이란,서로 인접한 두 개의 값을 비교하여 필요 시교환을 수행하고 이를 전체 자료에 걸쳐 반복하는 것입니다. Bubble Sort 알고리즘을 통해값을 오름차순 또는 내림차순으로 정렬할 수 있습니다.     Bubble Sort를 수행하는 함수를 만들어가변 배열의 수를 정렬하도록 하겠습니다.  우선은 가변 배열에 랜덤한 값을 대입하도록 하죠. 랜덤 함수를 이용할 것인데 랜덤 함수를 이용하기 위해 "time.h" 파일을 포함시켜 줍니다. rand 함수를 통해 랜덤한 수를 얻을 수 있긴 하지만,그냥 사용하면 다시 실행해도 계속 같은 수가 나오게 됩니다. 우리가 무작위로 숫자를 종이에 적었다고 합시다.근데 항상 그 종이만 보고 값을.. 2024. 4. 7.