구조체 3
-
프로그래밍에서 객체관계는, 각 구조체 간의 상호작용을 정의한다. 이는 클래스간의 관계 라고 도 이해할 수 있으며, 총 5가지 유형으로 분류할 수 있다. 연관(Association) Assocation은 두 클래스가 서로를 사용하는, 서로가 상속된 관계라고 할 수 있다. 이는 "사용한다" 또는 "알고있다"로 정의할 수 있는데, 서로가 서로의 값을 이용하거나 함수를 사용할 수 있는 관계라고 할 수 있다. 예를들어 '학생'클래스와 '교수'클래스가 있다면, '학생'은 '교수'가 누구인지, 어떠한 과목을 가르치는지 알고, '교수'는 학생이 누구인지 몃학년인지 등의 정보를 알 수 있을것이다. 이것은 두 클래스가 독립적으로 존재하면서도 서로를 참조할 수 있는 관계를 나타낸다. 집합(Aggregation) Aggreg..
-
C++에서는 일반적인 함수포인터 선언방식 이외에 다른 함수포인터 선언방식을 지원한다. 사용방법은 다음과 같다. func라는 함수를 선언하였다. 11번째 줄은 함수 포인터 구조체를 사용하여 정의해주는 일반적인 방법이다. 구조체 내부에 함수포인터를 사용할 경우 대부분 이러한 방법을 이용하게 된다. 13번째 줄 또한 functype이라는 별명을 사용하여 함수포인터를 정의해주는 방법이다. 23번째 줄은 functional 라이브러리를 사용하여 함수 포인터를 선언하는 방법이다. functional 라이브러리를 사용하면 다양한 함수나 함수포인터를 객체로 간편하게 변환하거나 함수 객체를 조합하여 더 복잡한 동작을 수행하게 만들 수 있다.
-
C++에서는 구조체를 선언하고 내부에 함수를 생성해줄 수 있다. 그러나, 구조체는 선언전에 메모리할당이 발생하지 않는다. 그럼으로 함수는 CODE 영역에 메모리가 할당되어 실행되게 되는데. 구조체 안에 함수가 존재하지 않음으로 사실 구조체는 함수를 실행할 수 없다. 구조체 내부에서 함수를 선언하고 실행하는건 다음과 같은 방식을 따른다. Print함수가 구조체 내부에서 선언됨을 볼 수 있다. 그러나, 함수는 구조체 내부에 존재하여도 구조체는 선언 전에 메모리 할당이 일어나지 않음으로 함수 메모리에 존재하나. 실행할 수 없다. 그럼으로 구조체 내부에 존재하는 함수는 __thiscall 을 내부에 붙여서 구조체 내부에서 함수를 다시 호출해준 뒤. 괄호 안에 자신의 구조채를 선언하여 동작하게 된다. 즉, 위에서..