Virtual Function
ในบทนี้เราจะมาพูดถึง virtual function
กันนะครับ
|
|
 |
|
#include <iostream.h>
class one
{
public:
void number(void) {cout<<"Number one\n";}
};
class two:public one
{
public:
void number(void) {cout<<"Number two\n";}
};
class three:public one
{
public:
void number(void) {cout<<"Number three\n";}
};
class four:public one
{
int dd;
};
int main()
{
one *a;
a=new one;
a->number();
delete a;
a=new two;
a->number();
delete a;
a=new three;
a->number();
delete a;
a=new four;
a->number();
delete a;
return 0;
}
|
|
|
|
 |
[Download Code]
ตัวอย่างนี้เป็นเพียงการเกริ่นนำครับ
จะเห็นตัวอย่างนี้ไม่มีอะไรใหม่นะคัรบ ก็คือตัวที่เป็นแม่จะสามารถไปเท่ากับตัวที่เป็นลูกได้นะครับ
เมื่อ Run โปรแกรมออกมาจะมีประโยชน์เหมือนกันหมดครับ ทั้งนี้เพราะโปรแกรมจะไปเรียกคำสั่งจากตัวคลาสแม่ก่อนครับ
|
|
 |
|
#include <iostream.h>
class one
{
public:
virtual void number(void) {cout<<"Number one\n";}
};
class two:public one
{
public:
void number(void) {cout<<"Number two\n";}
};
class three:public one
{
public:
void number(void) {cout<<"Number three\n";}
};
class four:public one
{
int dd;
};
int main()
{
one *a;
a=new one;
a->number();
delete a;
a=new two;
a->number();
delete a;
a=new three;
a->number();
delete a;
a=new four;
a->number();
delete a;
return 0;
}
|
|
|
|
 |
[Download Code]
ตัวอย่างนี้เหมือนกับตัวอย่างแรกยกเว้นมีคำสั่ง
virtual อยู่หน้าคำสั่งในคลาส one เท่านั้นเอง จะเห็นแล้วนะครับว่า virtual
function ช่วยอะไรเราบ้าง
การใช้ virtual function ในโปรแกรมนั้นจะช่วยเราได้มาก
โดยเฉพาะถ้าเรามีฟังก์ชั่นชื่อเหมือนกัน มีตัวแปรในวงเล็บเหมือนกัน และเราใช้พอยต์เตอร์ช่วยในการทำงาน
เวลาเราเขียนโปรแกรมนั้น เราอาจจะให้มีฟังก์ชั่นเหมือนกันหลายๆตัว แต่ทำคนละคำสั่ง
จากนั้นเวลาเราเรียกใช้เราก็ใช้ชื่อเดียว โปรแกรมก็จะไปเรียกคำสั่งที่ถูกต้องมาเอง
นอกจากจะง่ายต่อการจำชื่อฟังก์ชั่นแล้ว ยังง่ายต่อการเขียนโค้ดด้วยครับ
ก็จบไปแล้วนะครับสำหรับการเขียนโปรแกรมภาษา
C++ ต่อไปก็เป็นหน้าที่ของเพื่อนๆ แล้วล่ะครับที่จะไปเสาะแสวงหาความรู้อื่นๆ
ก็ขอให้โชคดีนะครับ
|