Computer >> Máy Tính >  >> Lập trình >> C ++

Ẩn tất cả các phương thức được nạp chồng trong lớp cơ sở trong C ++

Trong C ++, chúng ta có thể sử dụng các kỹ thuật nạp chồng hàm. Nhưng nếu một số lớp cơ sở có một phương thức ở dạng nạp chồng (chữ ký hàm khác nhau có cùng tên) và lớp dẫn xuất xác định lại một trong các hàm hiện diện bên trong cơ sở, thì tất cả phiên bản được nạp chồng của hàm đó sẽ bị ẩn khỏi lớp dẫn xuất.

Hãy để chúng tôi xem một ví dụ để có được ý tưởng rõ ràng.

Ví dụ

#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);
}

Đầu ra

[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