Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

การซ่อนเมธอดโอเวอร์โหลดทั้งหมดในคลาสฐานใน C++


ใน C ++ เราสามารถใช้เทคนิคการโอเวอร์โหลดฟังก์ชันได้ แต่ถ้าคลาสฐานบางคลาสมีเมธอดเดียวในรูปแบบโอเวอร์โหลด (ลายเซ็นฟังก์ชันต่างกันที่มีชื่อเดียวกัน) และคลาสที่ได้รับมากำหนดฟังก์ชันที่มีอยู่ภายในฐานใหม่ เวอร์ชันโอเวอร์โหลดทั้งหมดของฟังก์ชันนั้นจะถูกซ่อนจาก คลาสที่ได้รับ

เรามาดูตัวอย่างกันเพื่อให้ได้แนวคิดที่ชัดเจน

ตัวอย่าง

#include <iostream>
using namespace std;
class MyBaseClass {
   public:
      void my_function() {
         cout << "This is my_function. This is taking no arguments" << endl;
      }
      void my_function(int x) {
         cout << "This is my_function. This is taking one argument x" << endl;
      }
};
class MyDerivedClass : public MyBaseClass {
   public:
      void my_function() {
         cout << "This is my_function. From derived class, This is taking no arguments" << endl;
      }
};
main() {
   MyDerivedClass ob;
   ob.my_function(10);
}

ผลลัพธ์

[Error] no matching function for call to 'MyDerivedClass::my_function(int)'
[Note] candidate is:
[Note] void MyDerivedClass::my_function()
[Note] candidate expects 0 arguments, 1 provided