관리 메뉴

ComputerVision Jack

[MFC프로그래밍 - Chapter1] 본문

Image Processing/MFC Programming

[MFC프로그래밍 - Chapter1]

JackYoon 2020. 2. 11. 14:15
반응형

들어가기 앞서 Chapter1에선 C++프로그래밍에 대한 복습이 이루어진다.

MFC에서 제공 하는 기본 클래스가 C++언어로 작성되고, C++을 이용해 만들어야 하기 때문이다.

클래스(Class)

C언어로 개발 하는 경우 문제점

C언어 구조체로 개발하는 경우 구조체 변수의 모든 필드 공간도 사용가능하기 때문에

오류를 감지 못하는 경우가 종종 발생하곤한다.

 

따라서 C++의 클래스를 사용한다. 

클래스는 변수뿐 아니라 함수도 멤버로 끌어오기 때문이다.

또한 엑세스 지정자를 변수와 함수에 적용이 가능하다.

  • public : 클래스 내의 함수 뿐만 아니라 밖의 함수도 가능하다.
  • private : 클래스 내에 존재하는 함수만 사용 가능하다.
  • protected : 클래스 내에 존재하는 함수만 사용가능하다.

클래스는 서로 연관이 있는 멤버 변수와 멤버 함수를 모아서 하나의 의미 있는 자료구조를 정의할 수 있고,

또한 외부로부터 정보를 보호할 수 있다.

클래스 내의 멤버 함수는 클래스 내에서 구현될 수 있고 클래스 밖에서 구현될 수도 있다.

 

생성자

클래스 이름과 같은 클래스 내부 함수

클래스 객체가 만들어 질 때 자동으로 호출된다. 클래스 내의 멤버 변수를 초기화 하는 목적으로 사용된다.

파생클래스, 가상함수, 포인터

파생 클래스

C언어 구조체형일 경우, 새로운 추가적인 기능을 구현하려면 새로운 구조체를 추가해야한다.

하지만 C++은 상속을 고려하여 파생클래스를 만들어낸다.

파생 클래스를 이용하면 기존 데이터형에서 확장된 데이터형을 선언할 수 있다.

 

가상 함수

상속받는 클래스 내에서 상위 클래스와 동일한 클래스가 있을 경우, 새로운 이름으로 명명해야 하는 경우가 발생한다.

따라서 기능은 같은데 이름이 다른 함수가 존재할 수 있다.

이러한 불편함을 해결해 주기위해 가상함수가 존재한다.

virtual void function(int);

 

포인터

파생 클래스를 정의했을 때 얻을 수 있는 이점은 기반 클래스에 대한 포인터 변수로 파생 클래스 변수도 지칭할 수 있다.

내부에 동일한 이름으로 정의된 함수를 실행할 때, 함수 실행에 대한 결정은

컴파일 시간에 할 수 없고 실행 시간에만 가능하다.

 

C++에선 메모리를 할당 받기 위해 new연산자를 이용한다.

함수 오버로드, 디폴트 매개변수, 연산자 오버로드

함수 오버로드

같은 기능을 갖는데 매개 변수가 다른 경우, 동일 이름을 적용하고 매개변수만 다른 함수를 만들어 낼 수 있다.

또한 함수 호출 시, 매개변수를 토대로 그에 상응하는 함수가 불러온다.

void function(int num1);

void function(int num1, int num2); 둘은 이름과 기능이 같지만 다른 함수이다.

 

디폴트 매개변수

매개 변수가 많은 경우 함수 호출에 있어 오류가 발생할 수 있다.

디폴트값을 지정하여 모든 매개변수 의미와 상관없이 함수를 호출할 수 있는 편리성이 존재한다.

 

연산자 오버로드

연산자 오버로드는 하나의 연산자를 여러가지 다른 용도로 활용하난 것

C++에선 연산자 재정의 기능을 제공한다.

반응형

'Image Processing > MFC Programming' 카테고리의 다른 글

[MFC프로그래밍 - Chapter6]  (0) 2020.02.25
[MFC프로그래밍 - Chapter5]  (0) 2020.02.24
[MFC프로그래밍 -Chapter4]  (0) 2020.02.21
[MFC프로그래밍 - Chapter3]  (1) 2020.02.18
[MFC프로그래밍 - Chapter2]  (0) 2020.02.12
Comments