ใน C++ เราสามารถโอเวอร์โหลดฟังก์ชันได้ ฟังก์ชันบางอย่างเป็นฟังก์ชันปกติ บางส่วนเป็นฟังก์ชันประเภทคงที่ ให้เราดูโปรแกรมหนึ่งและผลลัพธ์ของโปรแกรมเพื่อรับแนวคิดเกี่ยวกับฟังก์ชันคงที่และฟังก์ชันปกติ
ตัวอย่าง
#include <iostream> using namespace std; class my_class { public: void my_func() const { cout << "Calling the constant function" << endl; } void my_func() { cout << "Calling the normal function" << endl; } }; int main() { my_class obj; const my_class obj_c; obj.my_func(); obj_c.my_func(); }
ผลลัพธ์
Calling the normal function Calling the constant function
ที่นี่เราจะเห็นว่ามีการเรียกฟังก์ชันปกติเมื่อวัตถุเป็นปกติ เมื่อวัตถุมีค่าคงที่ จะเรียกฟังก์ชันคงที่
หากวิธีการโอเวอร์โหลดสองวิธีมีพารามิเตอร์ และพารามิเตอร์หนึ่งเป็นปกติ อีกวิธีหนึ่งเป็นค่าคงที่ จะทำให้เกิดข้อผิดพลาด
ตัวอย่าง
#include <iostream> using namespace std; class my_class { public: void my_func(const int x) { cout << "Calling the function with constant x" << endl; } void my_func(int x){ cout << "Calling the function with x" << endl; } }; int main() { my_class obj; obj.my_func(10); }
ผลลัพธ์
[Error] 'void my_class::my_func(int)' cannot be overloaded [Error] with 'void my_class::my_func(int)'
แต่ถ้าอาร์กิวเมนต์เป็นการอ้างอิงหรือประเภทตัวชี้ ก็จะไม่เกิดข้อผิดพลาด
ตัวอย่าง
#include <iostream> using namespace std; class my_class { public: void my_func(const int *x) { cout << "Calling the function with constant x" << endl; } void my_func(int *x) { cout << "Calling the function with x" << endl; } }; int main() { my_class obj; int x = 10; obj.my_func(&x); }
ผลลัพธ์
Calling the function with x