📅  最后修改于: 2023-12-03 14:59:51.395000             🧑  作者: Mango
在C++中,嵌套类也被称为内部类或者嵌套结构体/嵌套类。定义在一个类的内部的类被称为嵌套类。它们是一个类可以嵌套在另一个类的内部,可以访问外部类的私有成员。嵌套类可以用来将一个类的一些实现细节封装起来,使得代码更加清晰,结构更加合理。
嵌套类的语法格式如下:
class OuterClass {
// 外部类的定义
public:
// 内嵌类的定义
class NestedClass {
// 嵌套类的定义
};
};
以下是一个嵌套类的示例代码,其中嵌套类被用来实现一个简单的链表:
#include <iostream>
class LinkedList {
private:
struct Node {
int data;
Node* next;
};
Node* head;
public:
LinkedList() {
head = nullptr;
}
void Add(int data) {
Node* node = new Node;
node->data = data;
node->next = head;
head = node;
}
void Print() {
Node* current = head;
while(current != nullptr) {
std::cout<< current->data <<" -> ";
current = current->next;
}
std::cout<<"null";
}
class Iterator {
private:
Node* current;
public:
Iterator(LinkedList* list) {
current = list->head;
}
int GetNext() {
int data = current->data;
current = current->next;
return data;
}
bool HasNext() {
return current != nullptr;
}
};
};
int main() {
LinkedList list;
list.Add(1);
list.Add(2);
list.Add(3);
LinkedList::Iterator iterator(&list);
while(iterator.HasNext()) {
std::cout<< iterator.GetNext() <<" ";
}
std::cout<<"\nLinked list: ";
list.Print();
return 0;
}
在上面的示例代码中,Iterator
是一个嵌套类,它被用于遍历链表。它可以访问外部类LinkedList
的私有成员head
,并且它的构造函数接受一个LinkedList
类型的指针作为参数,用于初始化它自己的current
成员变量。
嵌套类是C++中非常有用的特性之一,它可以提高代码的组织性,使得代码更加清晰易懂。我们可以在嵌套类中访问外部类的私有成员,这为我们提供了更大的灵活性和控制性。