■ 클래스 소속밝히기

소속된 클래스 이름::함수 이름

Cmfc0331View::Cmfc0331View()

 

■ CObject

:MFC의 최상위 클래스

닷넷에서 최상위 클래스인 Object클래스의 역할과 거의 비슷(닷넷의 오브젝트 클래스-기본 자료형을 가지고 있음)

따라서, CObject클래스에서 파생된 클래스는 모든 데이터 타입을 사용할 수 있다.

 

MFC를 자세히 공부하기 위해서 CObject클래스 부터 파생된 클래스로 학습.

클래스의 내부요소를 자세히 설명해 놓은것이 msdn이다.

 

■ C++클래스에서 함수의 선언부와 구현부(C#과의 차이)

C#의 경우 클래스내에 필드블럭/메서드블럭으로 구분되었다.

메서드의 구현부에서 바로 구현하였을 뿐, 메서드의 선언부를 따로 두지 않았다.

 

그러나 C++은 함수가 구현되면 함수의 선언부가 반드시 코드 블럭내에 존재해야 한다.

미리 선언하지 않은 함수는 소속을 밝히더라도 멤버가 아니라는 에러가 발생한다.

해당 클래스에 미리 함수의 선언부를 작성해 주어야 한다.

선언부 없이 구현부만 존재할 경우 에러발생 하지만, 선언만 하고 구현하지 않는 것은 괜찮다.

변수를 선언하고 사용하지 않는 것과 같은 원리이다.

 

▷ 함수의 선언부=헤더파일=필드블럭(함수의 선언부는 C#에서의 필드블럭과 같다고 볼 수 있다)

▷ 함수의 구현부=소스파일(.cpp)에 존재=메서드블럭

 

▷ 이렇게 함수를 선언부와 구현부를 분리해서 작성하는 이유

1. 구현부를 보여 줄 필요가 없기 때문에.

헤더파일에서 선언부만 보아도 함수의 용도를 알 수 있기 때문에 구현부를 보여줄 필요가 없다.

그러나 C#은 선언부가 없기 때문에 구현되는 코드 전체를 보여주어야 한다.

2. 코드 길이가 너무 길어지는 것을 막기 위해.

 

■  전역함수 및 변수

어떤 클래스에도 소속되지 않은 함수 혹은 변수를 만들때

프로젝트 내의 어떤 부분에 두어도 상관 없다.

'클래스 뷰'의 '전역 함수 및 변수'에서 해당 함수 또는 변수를 더블클릭하면 그 위치를 찾을 수 있다.

 

전역함수의 경우 함수 원형을 선언하지 않아도 된다.

C의 표준라이브러리 함수 사용 가능.(함수 원형 선언 없이)

 

C++에서 전역함수나 변수는 C#에서의 의미와는 차이가 있다.

전역이라고 하더라도 어디서든 자유롭게 쓸 수 있는 것은 아니다.

같은 함수명(변수명)으로 선언된 전역함수(전역변수)라 할지라도 클래스 별로 그 의미는 다르다.(같은 것이라고 볼 수 없다)

선언된 클래스 내에서만 사용할 수 있다.


Posted by 마마필로 :