본문 바로가기

C++7

[C++]계승 C언어와 C++언어를 구별 짓는 특수한 기능들이 있는데 그 중에 하나가 계승(Inheritance)이다. 그럼 계승이란 무엇인가? 계승을 쉽게 말하면 똑같은 요소(함수, 인자)들이 있으면 그것을 각자 가지고 있지 말고 물려받아서 쓰면 효율적이다. 라는 것이다. 그럼 계승에는 어떤것이 있을까? 우선 무엇인가를 계승시켜주는 클래스를 기본 클래스, 기저 클래스, 베이스 클래스, 슈퍼 클래스라고 부른다. 그리고 계승받는 클래스를 파생 클래스, 서브 클래스라고 부른다. 간단한 예를 보면... #include using namespace std; class 기본클래스 { public : int temp; char array[10]; }; class 파생클래스 : public 기본클래스 { public : int i.. 2009. 7. 28.
[C++]inline Function 함수를 정의할 때 보면 type funct() { ... } 라고 정의할 때가 있는 반면 inline type funct() { ... } 라고 정의할 때도 있다. 이 두개의 차이는 무엇일까? 그건 바로 함수를 호출에 차이가 있다. 즉 inline없이 선언 했을 경우 함수를 호출하지만 inline를 선언해 주면 그 함수 본체의 코드가 직접 삽입된다. 일반적인 함수 호출(inline 선언 없는 함수) 함수 funct()에 inline이 붙어있었을 경우 void funct() { example code1; example code2; } int main(){ main_function code1; funct(); // 함수 호출 main_function code2; funct(); // 함수 호출 main_fu.. 2009. 7. 22.
[C++]Function Template 이번에 볼 것은 Tmeplate이다. 얘기도 많이 듣고 책 같은 곳에서 많이 보아는 왔지만 막상 쓰라고 하면 어떻게 써야할지 잘 움직이던 손가락이 멈추는 경험을 해보셨을꺼라 빈다.(나만 그런거면 억울하니까~ - 3-) 우선 Template은 어떨때 쓰는거냐하면 예를 들어 똑같은 동작을 하는데 변수 타입만 다른경우가 있을 때 쓴다. 예를 들어 파라미터로 int형 2개를 넘겨줘서 2개의 곱도 구해야하고 double형 2개를 넘겨줘서 2개의 곱을 구해야 하는 함수가 필요하다고 하자. 이럴때 Template를 사용하면 굳이 2개의 함수를 별도로 만들 필요가 없다. 그럼 간단한 예를 하나 보면... 123456template // typename이 반드시 T일 필요는 없다. 단, 모두 같은 변수 이름을 써야만 한.. 2009. 7. 18.
KMP 알고리즘... #include #include #include #include using namespace std; class KMP { private : char array[200], pat[10]; // array는 비교할 문자열, pat는 찾을 문자열 int temp; // 비교할 문자의 실패함수의 현재 값 int f_pat[10]; int i, k; // 함수 제어의 필요한 함수 int n, l; // n은 찾을 문자열의 길이 l은 비교할 문자열의 길이 public : KMP() { temp=-1, i=0, k=0; for(i=0; i input(); } void KMP::makefaile() { int val=0, p=0; // val은 실패함수에 들어갈 값이고 p는 함수 제어 변수이다. int j=1, i;.. 2009. 3. 4.
마방진~ Magic square #include class Magic { private : int row, col; // 2차 배열의 가로와 세로 값 int ro, co; // 변환시 가로와 새로 값 int **p; // 2차 동적 배열의 포인터 public : // 생성자 Magic(){ row=col=0; ro=co=0; } //소멸자 ~Magic(){ delete[] p; } void select(); // 초기 선택문 void evefun(int i); // 짝수 4의 배수 구현 함수 void oddfun(int i); // 홀수 구현 함수 void printout(int i); // 출력 함수 void change(int i); // 홀수 마방진의 이동 제어 함수 void swap(int i, int k, int n); // .. 2009. 3. 4.
Distinct Binary Tree(상이한 이진 트리) #include #include #include using namespace std; class Tree // 프로그램 전체를 제어하는 클래스 { private: int leftcount; // 비주얼하게 출력 시 왼쪽 자식을 표현하기 위한 변수 int rightcount; // 비주얼하게 출력 시 오른쪽 자식을 표현하기 위한 변수 public: Tree() // 생성자 함수 { leftcount = rightcount = 0; } ~Tree() // 소멸자 함수 { } void Input(); // 값을 입력 받는 함수 void Output(int); // Tree를 비주얼하게 출력하는 함수 unsigned long Treecount(int); // 입력 받은 노드로 만들 수 있는 트리 개수를 계산할 .. 2009. 3. 4.
Sort - 정렬 아래 소개할 프로그램은 난수파일(input.txt)파일로부터 난수들을 사용자가 지정한 수 만큼 읽어 들여와서 Insert(삽입), Quick(빠른), Heap(힙), Merge(합병), Selection(선택), Bubble(버블) 별로 정렬하고 그 결과를 화면에 보여주고 각 정렬하는데 걸리는 시간을 측정하는 프로그램이다. 필자가 작성한 별도의 코드에는 정렬 과정도 출력하는 코드도 있지만 그건 이 코드를 아~~~주 조금만 손 보면 가능한 것이기에 따로 올리지는 않겠다. 그리고 이번에 새로 사용해보는 SyntaxHighlighter 관계상 코드의 복사가 가능함으로 주요 코드만 올리겠다. 우선 코드를 보면... // 삽입 정렬 void Sort::insertsort() { int j=0; int i=1;//.. 2009. 3. 4.