Polymorphism เป็นคุณลักษณะสำคัญของการเขียนโปรแกรมเชิงวัตถุซึ่งหมายถึงการมีหลายรูปแบบ ซึ่งแบ่งออกเป็น ความแตกต่างของเวลาคอมไพล์ และ ความแตกต่างของรันไทม์ ใน C++
ตัวอย่างของความแตกต่างของเวลาคอมไพล์คือฟังก์ชันโอเวอร์โหลดหรือโอเปอเรเตอร์โอเวอร์โหลด ตัวอย่างของความแตกต่างระหว่างรันไทม์คือการแทนที่ฟังก์ชัน
ตัวอย่างของ polymorphism โดยใช้ฟังก์ชันโอเวอร์โหลดในภาษา C++ มีดังนี้
ตัวอย่าง
#include <iostream>
using namespace std;
class Example {
public :
void func(int a) {
cout << "\nThe value of a: " << a;
}
void func(int a, int b) {
cout << "\nThe value of a: " << a;
cout << "\nThe value of b: " << b;
}
void func(char c) {
cout << "\nThe value of c: " << c;
}
};
int main() {
Example obj;
cout<< "\nOne int value";
obj.func(5);
cout<< "\nOne char value";
obj.func('A');
cout<< "\nTwo int values";
obj.func(7, 2);
return 0;
} ผลลัพธ์
ผลลัพธ์ของโปรแกรมข้างต้นมีดังนี้
One int value The value of a: 5 One char value The value of c: A Two int values The value of a: 7 The value of b: 2
ตอนนี้ เรามาทำความเข้าใจโปรแกรมข้างต้นกัน
ฟังก์ชั่นสมาชิก func() ในคลาส Example โอเวอร์โหลด มีฟังก์ชัน func() 3 ฟังก์ชันพร้อมพารามิเตอร์ต่างๆ ที่สามารถเลือกได้ตามต้องการ ข้อมูลโค้ดสำหรับสิ่งนี้มีดังต่อไปนี้
class Example {
public :
void func(int a) {
cout << "\nThe value of a: " << a;
}
void func(int a, int b) {
cout << "\nThe value of a: " << a;
cout << "\nThe value of b: " << b;
}
void func(char c) {
cout << "\nThe value of c: " << c;
}
}; ในฟังก์ชัน main() วัตถุ obj ของคลาส Example จะถูกสร้างขึ้น ฟังก์ชัน func() ถูกเรียกโดยมีอาร์กิวเมนต์ต่างกันเพื่อแสดงฟังก์ชันโอเวอร์โหลด ข้อมูลโค้ดสำหรับสิ่งนี้มีดังต่อไปนี้
int main() {
Example obj;
cout<< "\nOne int value";
obj.func(5);
cout<< "\nOne char value";
obj.func('A');
cout<< "\nTwo int values";
obj.func(7, 2);
return 0;
}