บ่อยครั้งที่เป็นความคิดที่ดีที่จะมีคลาสฐานนามธรรมเพื่อแยกอินเทอร์เฟซของวัตถุ
ปัญหาคือการสร้างการคัดลอก IMHO นั้นค่อนข้างเสียหายโดยค่าเริ่มต้นใน C ++ โดยที่ตัวสร้างสำเนาจะถูกสร้างขึ้นตามค่าเริ่มต้น
ดังนั้น gotchas คืออะไรเมื่อคุณมีคลาสฐานนามธรรมและพอยน์เตอร์ดิบในคลาสที่ได้รับ
class IAbstract
{
~IAbstract() = 0;
}
class Derived : public IAbstract
{
char *theProblem;
...
}
IAbstract *a1 = new Derived();
IAbstract a2 = *a1;//???
และตอนนี้คุณปิดการใช้งานการคัดลอกอย่างหมดจดสำหรับลำดับชั้นทั้งหมดหรือไม่ ประกาศคัดลอกการก่อสร้างเป็นส่วนตัวIAbstract
หรือไม่
มีกฎสามข้อในคลาสฐานนามธรรมหรือไม่?