스태틱 썸네일형 리스트형 스레드 만들기 이번에는 지난번에 배운 멤버함수포인터를 응용하여 스레드를 만들어 보겠습니다. 일단 가장 간단하게 스레드를 만들어 볼건데요 우선 스레드를 사용하기 위해서 Windows.h를 포함시킵니다. #include #include using namespace std; DWORD __stdcall foo(void* p) { return 0; } int main() { CreateThread(0,0, foo, //스레드로 수행할 함수 (void*)"A", //스레드 함수로 보낼 인자. 0,0); } 간단한 코드인데요 DWORD나 __stdcall은 윈도우즈에서 사용하는것들인데 중요한게 아니니 넘어갈게요 메인 함수에 CreateThread를 보면 3번째 4번째 패러미터가 중요합니다. 쉽죠 하지만 이건 객체지향인 C++이 .. 더보기 멤버함수 포인터 C++은 함수 포인터가 있습니다. 포인터가 주소를 저장한 변수이고 함수또한 특정 주소에 저장된 값이죠. 그러므로 함수포인터는 그 함수의 주소를 가리키고 있는것입니다 멤버 함수 포인터는 클래스의 멤버 함수를 가르키고 있는 포인트 변수 겠지요 그럼 이게 뭐가 다를까요? 지난 번에 이야기했듯이 멤버함수는 첫번째 숨겨진 패러미터로 this를 가지고 있습니다. 일반 함수포인터에 멤버함수를 넣으면 패러미터가 달라서 에러가 뜨게 됩니다. 그럼 this가 없는 Static 함수는 대입이 가능한가요? 넵! Static함수는 대입이 가능합니다. 이제부터 아래코드를 보시죠 // 핵심 1. 일반함수 포인터에 멤버함수의 주소를 담을 수 없다. // 핵심 2. 일반 함수 포인터에 static 멤버함수의 주소를 담을 수 있다. /.. 더보기 [C++] Method Call 클래스객체에서 필드는 메모리에 여러개지만 메소는 하나뿐인데 어떻게 구분할까요? class Point { int x=0, y=0; public: void Set(int a,int b) { x = a; y = b; } }; int main() { Point p1; Point p2; p1.Set(10,20); } 멤버 함수는 1번째 인자로 객체의 주소(this)가 추가됩니다 위에 Set은 실제는void Set(Point* const this, int a, int b) 이런식으로 호출되는데요 class Point { int x=0, y=0; public: void Set(Point* const this, int a, int b) { this->x = a this->y = b } }; 코드를 바꿔보면 위와 같이 .. 더보기 이전 1 다음