>백엔드 개발 >C++ >C 클래스가 자신을 멤버 변수로 포함할 수 있나요?

C 클래스가 자신을 멤버 변수로 포함할 수 있나요?

Patricia Arquette
Patricia Arquette원래의
2024-12-17 04:56:24813검색

Can a C   Class Contain Itself as a Member Variable?

C 클래스 자체를 멤버로 참조할 수 있나요?

C 프로그램을 작업하면서 C 프로그램을 만들고 싶은 시나리오를 상상해 보세요. 식 트리를 나타내는 클래스입니다. 이 클래스 내에서 트리를 접미사 순서로 탐색하고 평가하는 메서드를 정의하려고 합니다. 그러나 구현을 자세히 살펴보면

`

<br>class Node {</p>
<pre class="brush:php;toolbar:false">char *cargo;
Node left;
Node right;

};

'왼쪽'과 '오른쪽'을 다음과 같이 선언할 수 없다는 사실을 깨닫고 실망합니다. '노드' 유형. 이는 근본적인 질문을 제기합니다. C 클래스가 자신을 멤버로 포함할 수 있습니까?

제한 사항 공개

이 질문에 대한 대답은 "아니오"입니다. 멤버를 '노드' 유형으로 선언하면 무한 재귀가 생성됩니다. 각 노드에는 두 개의 다른 노드 개체가 포함되며, 여기에는 무한정 두 개의 노드 개체가 더 포함됩니다. 이 재귀적 정의는 무한한 크기의 객체로 이어지며 이는 실현 불가능합니다.

구조에 대한 포인터 소개

클래스가 자신을 멤버로 직접 참조할 수는 없지만 , 포인터를 통해 자신에 대한 참조를 계속 유지할 수 있습니다. 다음은 이 문제를 해결하는 수정된 버전의 수업입니다.

`

<br>class Node {</p>
<pre class="brush:php;toolbar:false">char *cargo;
Node* left;  // Pointer to a Node
Node* right;  // Pointer to a Node

};
`

포인터를 사용하면 각 노드가 동일한 클래스의 다른 노드를 참조하는 트리 구조를 유지할 수 있습니다. 이를 통해 무한 재귀가 발생하지 않고 표현식 트리를 효율적으로 탐색하고 평가할 수 있습니다.

위 내용은 C 클래스가 자신을 멤버 변수로 포함할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.