본문 바로가기

Programming/C++17

[ C/C++ ] Window Thread 프로그래밍 #include #include #include /* run this program using the console pauser or add your own getch, system("pause") or input loop */ unsigned WINAPI ThreadFunc(void *arg); int g_checkid = 0; int main(int argc, char *argv[]) { HANDLE hThread,hThread2; unsigned threadID; int param=5; hThread=(HANDLE)_beginthreadex(NULL, 0, ThreadFunc, (void*)¶m, 0, &threadID); hThread2=(HANDLE)_beginthreadex(NULL, .. 2021. 10. 29.
[ Windows Socket ] 소켓 프로그래밍/소켓 통신 예제 간단한 채팅 프로그램 Server #include #include #include // 윈도우즈기 때문에 들어 감 void ErrorHandling(char * message); int main(int argc, char *argv[]) { WSADATA wsaData; // 윈도우즈최적화 SOCKET hServSock, hClntSock; SOCKADDR_IN servAddr, clntAddr; int szClntAddr; char message[30]; int strLen; if(argc != 2){ printf("Usage : %s \n", argv[0]); exit(1); } // 윈도우즈이기 때문에 WSAStartup 이 들어감. //소켓 만들기 전에 들어가는데, MAKEWORD 는 버전 확인용이라고 생각하면 된다... 2021. 9. 17.
[ C++ ] 템플릿과 표준 템플릿 라이브러리(STL) 제네릭 또는 일반화 : 함수나 클래스를 일반화시키고, 매개변수타입을 지정하여 틀에서 찍어 내듯이 함수나 클래스 코드를 생산하는 기법 템플릿 : 함수나 클래스를 일반화하는 C++ 도구 : template 키워드로 함수나 클래스 선언 -> 변수나 매개 변수의 타입만 다르고, 코드 부분이 동일한 함수를 일반화시킨다. 제네릭 타입 : 일반화를 위한 데이터 타입 템플릿 선언 양식 template 또는 template 3개의 제네릭 타입을 가진 템플릿 선언 template 템플릿 사용예시 #include using namespace std; template void myswap(T& a, T& b) { T tmp; tmp = a; a = b; b = tmp; } int main() { int a = 4, b = 6.. 2021. 6. 9.
[ C++ ] 가상함수와 추상클래스 가상 함수(virtual function) virtual 키워드로 선언된 멤버 함수이다. virtual 키워드의 의미는 아래와 같다. - 동적 바인딩 지시어 - 컴파일러에게 함수에 대한 호출 바인딩을 실행 시간까지 미루도록 지시하는 역할을 한다. 함수 오버라이딩(function overriding) 파생 클래스에서 기본 클래스의 가상 함수와 동일한 이름의 함수 선언 - 기본 클래스의 가상함수의 존재감을 상실시킨다. - 파생 클래스에서 오버라이딩한 함수가 호출되도록 동적 바인딩 - 함수 재정의라고도 부른다. - 다형성의 한 종류이다. 오버로딩 : 같은 클래스 내에서 이름이 같은 것. 추상 클래스 추상 클래스를 얘기하기 전에, 순수 가상함수를 먼저 설명해보겠다. 순수 가상 함수 함수의 코드가 없고, 선언만 .. 2021. 5. 26.