สามารถstruct
สืบทอดใน C ++ ได้หรือไม่?
สามารถstruct
สืบทอดใน C ++ ได้หรือไม่?
คำตอบ:
ใช่struct
เป็นเหมือนclass
ทุกอย่างยกเว้นความสามารถในการเข้าถึงเริ่มต้นใช้public
สำหรับstruct
(ในขณะที่ใช้private
เพื่อclass
)
ใช่. การสืบทอดเป็นค่าเริ่มต้น
ไวยากรณ์ (ตัวอย่าง):
struct A { };
struct B : A { };
struct C : B { };
นอกเหนือจากที่ Alex และ Evan ได้กล่าวไปแล้วฉันต้องการเพิ่มว่า C ++ struct ไม่เหมือนกับ C struct
ใน C ++, struct สามารถมีวิธีการสืบทอด ฯลฯ เช่นเดียวกับคลาส C ++
แน่นอน. ใน C ++ โครงสร้างและคลาสเกือบจะเหมือนกัน (สิ่งต่าง ๆ เช่นการกำหนดค่าเริ่มต้นสู่สาธารณะแทนที่จะเป็นแบบส่วนตัวนั้นแตกต่างกันเล็กน้อย)
ใน C ++ โครงสร้างของมรดกจะเหมือนกับคลาสยกเว้นความแตกต่างต่อไปนี้:
เมื่อรับโครงสร้างจากคลาส / struct ตัวระบุการเข้าถึงเริ่มต้นสำหรับคลาส / โครงสร้างพื้นฐานจะเป็นแบบสาธารณะ และเมื่อได้รับคลาสตัวระบุการเข้าถึงเริ่มต้นจะเป็นแบบส่วนตัว
ตัวอย่างเช่นโปรแกรม 1 ล้มเหลวด้วยข้อผิดพลาดในการรวบรวมและโปรแกรม 2 ทำงานได้ดี
// Program 1
#include <stdio.h>
class Base {
public:
int x;
};
class Derived : Base { }; // Is equivalent to class Derived : private Base {}
int main()
{
Derived d;
d.x = 20; // Compiler error because inheritance is private
getchar();
return 0;
}
// Program 2
#include <stdio.h>
struct Base {
public:
int x;
};
struct Derived : Base { }; // Is equivalent to struct Derived : public Base {}
int main()
{
Derived d;
d.x = 20; // Works fine because inheritance is public
getchar();
return 0;
}