Make your own free website on Tripod.com

. . . . . .เพื่อความสมบูรณ์แบบ ผมจะเพิ่มฟังค์ชั่นเข้าไป เพื่อจัดการข้อมูลใน class ครับ
class CData //<------ กำหนด class ชื่อ CData

{

. . . . . .public: //<------- ประกาศว่าข้อมูลหลังจากนี้สามารถใช้ร่วมกันได้แบบสาธารณะ

. . . . . . . . .char data[51];

. . . . . .public: //<------- ประกาศว่าฟังค์ชั่นหลังจากนี้สามารถใช้ร่วมกันได้แบบสาธารณะ

. . . . . . . . .CData( ); //<----- Constructor

. . . . . . . . .virtual ~CData( ); //<----- Destructor

. . . . . . . . .void SetData( char *dt );

. . . . . . . . .void GetData( char *dt );

. . . . . . . . .void ShowData( );

};

. . . . . .ในการเขียน class และใช้งาน class จะมีส่วนการทำงานอัต ตะ โน โม นัด (อัตโนมัติ ฮ่า ฮ่า) อยู่สองส่วนคือ Constructor และ Destructor ดูข้างบนครับ Constructor จะถูกเรียกทันที่เมื่อมีการประกาศใช้งาน class เราต้องตั้งชื่อ Constructor ให้ตรงกับชื่อ class นะครับ ต่อไปส่วนทำงานอัตโนมัติเมื่อเรายกเลิกการทำงานคือ Destructor จะมีเครื่องหมาย '~' บอกว่านี่คือ Destructor นะจ๊ะ การตั้งชื่อก็เหมือนกับชื่อ class ครับ ต่อไปก็เป็นฟังค์ชั่นภายใน class สำหรับ virtual จะอธิบายต่อไปครับ เรามาดูว่าการทำงานอัตโนมัติ มันทำงานอย่างไร
int main( )

{

. . . .CData MyData; //<------- กำหนดตัวแปร class ชื่อ MyData

};

. . . . . .เมื่อเรากำหนดตัวแปร class แบบนี้ปั๊บ !! โปรแกรมจะทำงานส่วนของ Constructor ก่อนปุ๊บ !! และทำงานไปได้ แป๊บ !! พอจบการทำงาน มันก็จะทำงานส่วนของ Destructor ทันที โป๊บ !! เห็มมะพอดี เป๊ะ !! เลย ฮ่า ฮ่า ฮ่า คราวนี้เราจะมาเขียนการทำงานใน Constructor และ Destructor กัน
CData::CData( ) //<--------- นี่คือ Constructor เขียนแบบนี้

{

. . . . . .strcpy( data, "Constructor" );

. . . . . .ShowData( );

}

CData::~CData( ) //<--------- นี่คือ Destructor เขียนแบบนี้

{

. . . . . .strcpy( data, "Destructor" );

. . . . . .ShowData( );

}

. . . . . .การทำงานครั้งแรกเมื่อกำหนดตัวแปร class เราให้ข้อความ "Constructor" แก่ตัวแปร data ที่อยู่ภายใน class และเรียกฟังค์ชั่นที่อยู่ภายใน class ชื่อ ShowData พิมพ์ข้อมูลที่อยู่ใน data ออกมา หลังจากจบการทำงานแล้ว จะไปทำงานส่วนของ Destructor ทันที โดย เราให้ข้อความ "Destructor" แก่ตัวแปร data ที่อยู่ภายใน class และเรียกฟังค์ชั่นที่อยู่ภายใน class ชื่อ ShowData พิมพ์ข้อมูลที่อยู่ใน data ออกมาอีกครั้งหนึ่ง การทำงานในส่วนของ ฟังค์ชั่น ShowData เป็นแบบนี้ และฟังค์ส่วนที่เหลือ ซึ่งเขียนเหมือนเดิมทุกประการเพียงแต่ต้องบอกว่าเป็นของ class อะไร ซึ่งมีรูปแบบ รูปแบบฟังค์ชั่น ชื่อคลาส :: ชื่อฟังค์ชั่น
void CData::ShowData( ) //<--------- นี่คือการเขียนฟังค์ชั่นของ class เขียนแบบนี้

{

. . . . . .print( "%s \n", data );

}

void CData::SetData( char *dt )

{

. . . . . .strcpy( data, dt); //<------ คัดลอกข้อความจากตัวแปร dt ที่ส่งเข้ามาไปยังตัวแปร data ของ class

}

void CData::GetData( char *dt )

{

. . . . . .strcpy( dt, data ); //<------ คัดลอกข้อความจากตัวแปร data ของ class ไปยังตัวแปร dt

}

. . . . . .เป็นงัย ง่ายดีมะ ต้องค่อยๆทำความเข้าใจนะครับ ว่าแต่ละขั้นตอนมันทำงาน อย่างไร โอกาสหน้าเราจะมาลุยเรื่อง การสืบทอด class และ virtual function ครับ สวัสดี