14. 프렌드, 예외, 기타사항(2) - 내포 클래스

WanJu Kim·2022년 12월 17일
0

C++

목록 보기
60/81

클래스 선언을 클래스 안에서 하면 그걸 '내포 클래스'라고 부른다. 멤버 변수들이 많을 때나, 같은 이름의 다른 클래스가 있을 때, 내포 클래스를 활용하면 이름이 난잡해지는 것을 방지할 수 있다. 이와 비슷하지만 다른, 클래스 안에 클래스 객체를 생성하는 컨테인먼트도 있었다. 우리는 이미 이 코드를 써보았다.

class Queue
{
	struct Node	// 내포 클래스와 비슷.
    {
    	Item item;
        struct Node* next;
    };
};

struct는 디폴트가 public이기 때문에 내포 클래스와 비슷하나 그 기능이 없다. 일단 생성자가 없다. 생성자를 만들어보자.

class Queue
{
public:
	class Node	// 내포 클래스와 비슷.
    {
    public:
    	Item item;
        Node* next;
        Node(const Item& i)
         	: item(i), next(nullptr)
			{}
    };
};

이런 식으로 만드면 된다. 그리고 내포 클래스가, 내포 클래스를 담고 있는 클래스(제 2클래스라 부르겠다.)와 범위 연산자를 사용해서 호출하면 된다. 예를 들어 위의 코드에서는 Queue::Node node; 이런 식으로 하면 된다. 접근 제한자는 기존과 마찬가지로 적용된다. 그래서 내포 클래스의 멤버들은 public 영역 안에 선언하는 게 좋다. 왜? private로 선언하면, 제 2클래스에서 접근할 수가 없기 때문이다.

profile
Question, Think, Select

0개의 댓글