คลาสที่ซ้อนกันคือคลาสที่ประกาศในคลาสอื่น คลาสที่ซ้อนกันยังเป็นตัวแปรสมาชิกของคลาสที่ปิดล้อม และมีสิทธิ์การเข้าถึงเหมือนกับสมาชิกคนอื่นๆ อย่างไรก็ตาม ฟังก์ชันสมาชิกของคลาสที่ปิดล้อมไม่มีสิทธิ์พิเศษในการเข้าถึงสมาชิกของคลาสที่ซ้อนกัน
โปรแกรมที่แสดงคลาสที่ซ้อนกันใน 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();