ในการเขียนโปรแกรมเชิงวัตถุ เราสามารถสืบทอดลักษณะเฉพาะของคลาสแม่ (Base Class) ไปยังคลาสลูก (Derived Class) ได้ คลาสลูกสามารถสืบทอดสมาชิกข้อมูล (Data Members) และฟังก์ชันสมาชิก (Member Functions) ของคลาสแม่
การเข้าถึงสมาชิกขึ้นอยู่กับระดับการเข้าถึง (Access Specifier):
- public − เข้าถึงได้จากคลาสลูก คลาสเดียวกัน และภายนอกคลาส
- protected − เข้าถึงได้จากคลาสลูกและคลาสเดียวกันเท่านั้น
- private − เข้าถึงได้จากคลาสเดียวกันอย่างเดียว
ตัวอย่างโค้ด
#include <iostream>
using namespace std;
class Base {
public:
int a;
protected:
int b;
private:
int c;
};
class Derived : public Base {
public:
int x;
};
int main() {
Derived d;
d.a = 10;
d.x = 20;
cout << "Derived class data member value : " << d.x << endl;
cout << "Base class data member value : " << d.a << endl;
return 0;
}
ผลลัพธ์
Derived class data member value : 20
Base class data member value : 10
ในโปรแกรมนี้ คลาสลูกสืบทอดคลาสแม่และสมาชิกข้อมูล สร้างออบเจกต์ d ของคลาสลูกเพื่อเข้าถึงสมาชิก a และ x แต่ไม่สามารถเข้าถึง b (protected) และ c (private) ได้ จะเกิดข้อผิดพลาดหากพยายามเข้าถึง