프로그래밍 관련
C# 고급 1편. 레지스트리(Registry)
C# 고급 1편. 레지스트리(Registry)
2012.11.151. 레지스트리(Registry) 이번 강좌에서 다루게 될 내용은, C#에서 제공하는 레지스트리 클래스를 이용한 레지스트리 읽기, 레지스트리 쓰기, 레지스트리 관리에 대해 간단히 알아보려고 합니다. 우선 레지스트리 클래스를 이용하려면 Microsoft.Win32 네임 스페이스를 사용하여야 합니다. using Microsoft.Win32; 그리고 아래 멤버들은, 오늘 우리가 배우게될 RegistryKey 클래스의 멤버들입니다. 멤버 메서드 설명 CreateSubKey 새 하위 키를 만들거나 기존 하위 키를 엽니다. OpenSubKey 지정된 하위 키를 검색합니다. DeleteSubKey 지정된 하위 키를 삭제합니다. DeleteSubKeyTree 하위 키와 자식 하위 키를 재귀적으로 삭제합니다. GetSu..
C++ 강좌 14편. 상속 오버라이딩과 가상 함수, 그리고 다중 상속
C++ 강좌 14편. 상속 오버라이딩과 가상 함수, 그리고 다중 상속
2012.11.141. 상속 오버라이딩(Inheritance Overriding)상속 오버라이딩을 보자니, 전에 배웠던 함수 오버로딩이 생각나지 않나요? 오버로딩이 인자의 자료형이나 수가 다른 함수를 같은 이름으로 여러번 중복 정의하는 것이라면, 오버라이딩은 이미 있는 함수를 무시해버리고 새롭게 함수를 재정의하는 것이라고 말할 수 있습니다. 더 자세히 말하자면, 이 오버라이딩(Overriding, 재정의)는 부모 클래스와 자식 클래스의 상속 관계에서, 부모 클래스에 이미 정의된 함수를 같은 이름으로 자식 클래스에서 재정의 하는것을 의미합니다. (이 때, 부모의 멤버 함수와 원형이 완전히 같아야 합니다. 그리고 오버라이딩시 부모 클래스의 함수가 모두 가려집니다.) #include using namespace std; cla..
C++ 강좌 13편. 객체 배열과 객체 포인터 배열, this 포인터
C++ 강좌 13편. 객체 배열과 객체 포인터 배열, this 포인터
2012.11.131. 객체 배열(Object Array)변수 배열, 구조체 배열은 들어보셨어도 객체 배열에 대해서는 들어보셨나요? 객체 배열도 다른 배열과 마찬가지로 비슷한 형식으로 선언됩니다. (데이터 타입 대신 클래스명이 위치합니다.) 객체 배열은 아래와 같은 방법으로 쉽게 만들 수 있습니다. 클래스명 객체명[크기];아래는 Student 객체를 배열로 만들어 각각의 요소들의 이름, 나이, 학번등을 초기화하는 예제입니다. #include using namespace std; class Student { private: char name[10]; int age; int studentID; public: Student() { cout
C++ 강좌 12편. 상속(Inheritance)
C++ 강좌 12편. 상속(Inheritance)
2012.11.121. 상속(Inheritance)이란? 여러분이 알고계시는 '상속(Inheritance)'은 무엇인가요? 물론, 이미 타 언어에서 상속을 미리 만나보신 분들도 있겠지만, 아닌 분들도 계실겁니다. 상속은 "일정한 친족적 관계가 있는 사람 사이에 한 쪽이 사망하거나 법률상의 원인이 발생하였을 때 재산적 또는 친족적 권리와 의무를 계승하는 제도" 라고 네이버 사전에 정의되어 있습니다. 쉽게 말해서, 부모님이 돌아가시면 부모님의 재산을 모두 물려받게 되는거죠. 그런데, 이런 상속이 C++에서도 존재합니다. 바로 우리가 전에 배웠던 클래스에서 말입니다.예를 들어서, 사람이란 클래스와 학생이란 클래스가 있다고 가정을 해봅시다. 사람이란 클래스 내에는 이름, 나이, 취미 등과 같은 속성과 함께, 일어나기, 잠자기, ..
C++ 강좌 11편. 프렌드(friend)
C++ 강좌 11편. 프렌드(friend)
2012.11.111. 프렌드(friend) 여러분이 알고계시는 friend의 뜻은 무엇인가요? 아시고 계시듯, friend는 "친구"라는 뜻을 가지고 있습니다. C++에서에 friend도 마찬가집니다. 클래스와 클래스끼리 친구(friend)관계를 형성할 수 있습니다. A와 B란 클래스가 존재한다고 합시다. A, B 클래스 둘 다 private 멤버를 가지고 있습니다. 우리가 알고있듯, private 멤버는 외부에서 접근할 수 없습니다. 그런데, A 클래스 내에서 B 클래스를 친구로 지정하면, B 클래스는 A 클래스의 private 멤버에 직접 접근이 가능해집니다. 그러나, A 클래스에서는 B 클래스의 private 멤버에 직접 접근이 불가능합니다. A 클래스도 가능하게 해주기 위해서는, B 클래스 내에서도 A 클래스를 ..
API 탐방 5편. 윈도우를 생성하고 표시하자! CreateWindow, ShowWindow
API 탐방 5편. 윈도우를 생성하고 표시하자! CreateWindow, ShowWindow
2012.11.11[API 탐방] 윈도우를 생성하고 표시하자!CreateWindow, ShowWindow 자 먼저, CreateWindow의 함수 원형을 살펴보도록 합시다. HWND CreateWindow(LPCTSTR lpClassName, LPCTSTR lpWindowName, DWORD dwStyle, int x, int y, int nWidth, int nHeight, HWND hWndParent, HMENU hMenu, HANDLE hInstance, LPVOID lpParam); 위 원형을 보면, 첫번째 인수에는 클래스 이름이 옵니다. 전에 RegisterClass 또는 RegisterClassEx 함수로 생성된 ATOM 클래스의 포인터, 혹은 문자열이 이곳에 위치합니다. 두번째 인자로는 윈도우의 타이틀바에 나..
C++ 강좌 10편. 참조자(Reference)
C++ 강좌 10편. 참조자(Reference)
2012.11.101. 참조자(Reference) 참조자(Reference, 레퍼런스)는 간단히 말하면 변수에 또 하나의 별명을 붙여주는 녀석입니다. 할당된 어느 메모리 공간에 이름에, 둘 이상의 이름을 부여하는 것이므로 대상이 이름이 존재하지 않을 경우에는 역시, 참조할 수 없습니다. 간단히 a란 변수에 aa라는 별명을 붙여주어 보도록 하겠습니다. int a=50; int &aa=a; 위를 보시면, a라는 변수를 선언과 동시에 50이란 값으로 초기화 되었고, 그 아래의 aa란 녀석에 a가 대입되었습니다. 한가지 특이한 점은 aa의 이름 앞에 &(주소 반환) 연산자가 붙는다는 것입니다. 이 주소 반환 연산자는 우리가 C언어에서 포인터를 공부할 때 한번 본 기억이 있죠? 물론, 변수 앞에 & 연산자가 붙으면 그 변수의 주소..
C++ 강좌 9편. Bool, Inline
C++ 강좌 9편. Bool, Inline
2012.11.091. Bool 오늘은 'Bool' 이라는 논리 자료형에 대해 알아보도록 하겠습니다. 논리, 말 그대로 참(true)과 거짓(false)으로만 구성되어 있는 자료형입니다. 이 true와 false는 논리 연산자(&&, ||, !)에서 자주 봤었죠? 과연 true과 false는 어떤값을 나타낼까요? 아래는 cout문으로 true와 false를 출력한 것입니다. #include using namespace std; int main() { cout
C++ 강좌 8편. 생성자와 소멸자(Constructor and Destructor)
C++ 강좌 8편. 생성자와 소멸자(Constructor and Destructor)
2012.11.081. 생성자(Constructor) 오늘은 객체 생성/소멸시에 호출되는 생성자와 소멸자에 대해 알아보도록 하겠습니다. 우리는 바로 전 강좌에서, private로 지정된 필드(=멤버 변수)를 초기화 시키기 위하여 SetInfo 함수를 따로 만들어 초기화 시켜주었습니다. 그런데, 이것보다 더 편하게 객체 생성과 동시에 초기화 시켜주는 녀석이 있습니다. 그 녀석이 바로 생성자라는 녀석입니다. 아래는 생성자의 형식입니다. class 클래스명 { public: 클래스명(매개변수..) { // ... } // .. } 위의 형식을 보시면, 생성자를 정의할때 생성자의 이름이 클래스의 이름과 같습니다. 생성자도 함수와 같이 매개변수를 가질 수 있습니다. 그리고 반환형이 없습니다. 한번 SetInfo 함수 대신 생성자를..
C++ 강좌 7편. 클래스(class)
C++ 강좌 7편. 클래스(class)
2012.11.041. 클래스(class) 클래스란 무엇일까요? 다른 언어를 공부하시다가 '클래스(class)'라는 말을 들어보신 분도, 그렇지 않은 분도 계실겁니다. C++의 클래스는, 쉽게 말하자면 C의 구조체에서 확장된 C++의 구조체의 또다른 이름입니다. 클래스는 변수와 함께 함수까지도 포함시킬 수 있습니다. 그럼, C++의 구조체와 클래스는 다른게 무엇인가요? 라는 궁금증을 품고 계시는 분들도 있을텐데, 구조체와 클래스의 차이점은 기본 접근 제한자의 차이일뿐, 그 이상 다른게 없습니다. 구조체 같은 경우는 기본 접근 제한자가 public이며, 클래스의 기본 접근 제한자는 private으로 제한되어 있습니다. '둘다 동일한 기능을 하면서도 왜 사라지지 않을까요?'에 대한 답은, C언어와의 하위 호완성을 위해서 남겨..
C++ 강좌 6편. 구조체의 확장
C++ 강좌 6편. 구조체의 확장
2012.11.011. C언어의 구조체C언어의 구조체를 다시한번 살펴보도록 합시다. 우리는 C언어 12강에서 구조체를 사용하여 관련있는 변수들끼리 묶어 손쉽게 관리를 할 수 있었습니다. 예를 한번 보도록 합시다. #include struct student { int id; char *name; float percentage; }; // 구조체 뒤에 세미콜론이 와야함 int main() { struct student s={1, "김철수", 90.5}; printf("아이디: %d \n", s.id); printf("이름: %s \n", s.name); printf("백분율: %f \n", s.percentage); return 0; } 결과: 아이디: 1 이름: 김철수 백분율: 90.500000 계속하려면 아무 키나 누르십..
C++ 강좌 5편. new, delete [최근 수정 2017.10.10]
C++ 강좌 5편. new, delete [최근 수정 2017.10.10]
2012.10.281. C언어의 malloc & free우리가 C언어를 배울 때, malloc과 free란 녀석은 이미 만나본 적이 있습니다. malloc이란 함수는 '힙 영역에 메모리 공간을 할당할 수 있게 도와주는 함수'라고 말했었고, free 함수는 'malloc 함수 호출 시 할당되었던 메모리 공간을 전부 해제할 수 있게 도와주는 함수'라고 말한 적이 있었습니다. C언어 11강에서 보았던 예제를 다시 한번 보도록 하겠습니다. #include #include int main() { int studentNum, totalScore=0; int* studentScore; int i; printf("학생 수를 입력하세요: "); scanf("%d", &studentNum); studentScore = (int *)mall..