프로그래밍 공부

프로그래밍 700

카테고리 설명
  • 전에 만들었던 기본 예시파일을 기초적인 FrameWork로 나눈다. 휴일동안 직접 해봤는데 객체간 나누기가 너무 시간이 오래걸린다는걸 관과했다. 그래도 바로 다음날 수업에 Framework나누기를 해서 다행이라고 생각한다. 각 객체를 FrameWork로 나누기 위해서는 기초적인 객체 개념을 먼저 보아야 하는데, C에서는 struct로 나누다가. C++에 와서 Class라는 개념으로 바뀌었다. C C++ Struct 객체 함수 Class상속 상속 = 부모 -> 자식 상속관계로 이루어진다. 이러한 Class는 각 int나 char처럼. 객체로 다룰 수 있는데. 이를통해 포인터처럼 사용해서 class def() {}; 라고 한다면, def* CL = new def(); 이런식으로 동적할당을 진행해줄 수 있게 ..

  • 객체 지향 프로그래밍에서 중요한 디자인 패턴으로, 특정 클래스가 단 하나의 인스턴스만 가지도록 보장하고, 그 인스턴스에 대한 전역적인 접근점을 제공한다. 즉, 전역변수로 선언한것과 같은 역할을 한다고 이해하면 된다. 특징 인스턴스 제한. 싱글톤 패턴은 인스턴스가 한개만 존재하도록 제한한다. 전역적인 접근점 제공 어디서든 해당 인스턴스에 접근할 수 있는 접근점을 제공한다 공유 리소스 관리 전역적 접근점을 제공함으로, 단일 인스턴스가 공유되도록 할 때 유용하다. 이러한 특징점으로. 싱글톤 패턴은 게으른 초기화(Lazy Initalization)이 가능한데, 이는 인스턴스가 필요한 시점까지 전역변수의 생성을 지연할 수 있다. 그러나, 싱글톤은 메모리를 할당할 때 메모리공간에 저장되는데 이것이 한정적이라 싱글톤..

  • 가상함수는 기본 클래스에서 선언되고 파생 클래스에서 재정의(override) 될 수 있는 함수이다. 가상 함수를 사용하면, 부모 클래스의 포인터나 참조를 사용하여 자식 클래스의 메서드를 호출 할 수 있으며, 실행 중 객체의 실제 유형에 따라 올바른 메서드가 호출된다. 이를 통해 다형성을 구현할 수 있으며, 코드의 유연성과 재사용성을 향상시킨다. 다형성을 지원하며, 객체 실 유형에 따라 다른동작을 수행할 수 있다. 기본 클래스에서 기본 동작을 정의하고 자식 클래스에서 필요에 맞게 다시 재정의 가 가능하다. 객체 지향 설계 원칙 중 하나인 "개방-폐쇄 원칙"(Open-Closed Principle)를 준수할 수 있다. 단점은 일반 함수보다 오버헤드가 더 많이발생하나, 무시할만한 수준이다. #include c..

  • 부모 클래스의 포인터나 참조를 사용하여 자식 클래스의 객체로 변환하는것을 의미한다. 엄격한 형변환으로 형변환 연산자를 사용하여 수행해야한다. 업케스팅 된 객체를 다시 원래 파생클래스로 되돌릴 수 있다. 업케스팅된 객체가 실제로 어떤 파생 클래스 객체인지 확인할 수 있다. 주의! 잘못된 다운케스팅은 런타임 에러를 발생시킬 수 있다. 다운케스팅은 모든 경우에 사용할 수 있는것이 아니다. class Animal { public: virtual void makeSound() { cout

  • 파생클래스(자식 클래스) 의 객체를 기본 클래스의 객체로 변환하는것을 의미한다. 이것은 부모 클래스의 포인터, 또는 참조로 자식 클래스를 가리키는것을 말한다. Upcasting의 기본개념은 다음과 같다. 다형성을 구현할 수 있다. 여러 자식 클래스 객체를 동일 부모 클래스 포인터 또는 참조로 처리할 수 있다. 코드의 유연성을 높일 수 있다. 새로운 자식 클래스를 추가하더라도 기존 코드를 변경하지 않고 사용할 수 있다. 유의! 부모클래스에 정의되지 않은. 자식클래스 만의 함수에는 접근할 수 없다! class Animal { public: void makeSound() { cout

  • 윈도우 API는 일반적인 C문법과 다르게 Winmain에서 코드가 실행된다. int APIENTRY wWinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPWSTR lpCmdLine, _In_ int nCmdShow) { UNREFERENCED_PARAMETER(hPrevInstance); UNREFERENCED_PARAMETER(lpCmdLine); // TODO: 여기에 코드를 입력합니다. // 전역 문자열을 초기화합니다. LoadStringW(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING); LoadStringW(hInstance, IDC_DX3D2310, szWindowCla..