คลาสที่ซ้อนกันคือคลาสที่ประกาศในคลาสอื่น คลาสที่ซ้อนกันยังเป็นตัวแปรสมาชิกของคลาสที่ปิดล้อม และมีสิทธิ์การเข้าถึงเหมือนกับสมาชิกคนอื่นๆ อย่างไรก็ตาม ฟังก์ชันสมาชิกของคลาสที่ปิดล้อมไม่มีสิทธิ์พิเศษในการเข้าถึงสมาชิกของคลาสที่ซ้อนกัน
โปรแกรมที่แสดงคลาสที่ซ้อนกันใน C++ มีดังนี้
ตัวอย่าง
#include<iostream>
using namespace std;
class A {
public:
class B {
private:
int num;
public:
void getdata(int n) {
num = n;
}
void putdata() {
cout<<"The number is "<<num;
}
};
};
int main() {
cout<<"Nested classes in C++"<< endl;
A :: B obj;
obj.getdata(9);
obj.putdata();
return 0;
} ผลลัพธ์
Nested classes in C++ The number is 9
ในโปรแกรมข้างต้น คลาส B ถูกกำหนดไว้ภายในคลาส A ดังนั้นจึงเป็นคลาสที่ซ้อนกัน คลาส B มีตัวแปรส่วนตัว num และฟังก์ชันสาธารณะสองฟังก์ชัน getdata() และ putdata() ฟังก์ชัน getdata() รับข้อมูลและฟังก์ชัน putdata() จะแสดงข้อมูล ได้ดังนี้
class A {
public:
class B {
private:
int num;
public:
void getdata(int n) {
num = n;
}
void putdata() {
cout<<"The number is "<<num;
}
};
}; ในฟังก์ชัน main() มีการกำหนดอ็อบเจ็กต์ของคลาส A และคลาส B จากนั้นฟังก์ชัน getdata() และ putdata() จะถูกเรียกโดยใช้ตัวแปร obj ดังแสดงด้านล่าง
cout<<"Nested classes in C++"<< endl; A :: B obj; obj.getdata(9); obj.putdata();