Làm thế nào để thực hiện ghi đè và ghi đè hàm trong C ++?

Bài viết này sẽ giới thiệu cho bạn về chức năng Overloading và Overriding trong C ++, đây là hai trong số những khái niệm rất quan trọng của OOPS.

C ++ là một trong tự nhiên và nó tự hào có các tính năng khác nhau. Trong phần này, chúng ta sẽ thảo luận về cách thực hiện Nạp chồng hàm và Ghi đè hàm trong C ++.



Những điểm sau sẽ được đề cập trong bài viết này,



Tiếp tục với bài viết này về Nạp chồng và ghi đè hàm trong C ++

Quá tải chức năng



Các hàm có cùng tên nhưng khác tham số được phép trong C ++ và được gọi Quá tải chức năng . Nó còn được gọi là Đa hình thời gian biên dịch.

Ví dụ:

phương thức lớp quét nào đọc một chuỗi
sum (int a, float b) sum (int a, int b) sum (int a, int b, int c)

Ở đây, có ba hàm trùng tên nhưng điều duy nhất phân biệt chúng là các tham số khác nhau trên mỗi hàm. Vì vậy, tùy thuộc vào các tham số được truyền vào, một hàm được gọi.



Nếu kiểu trả về của các hàm khác nhau thì nó được coi là không hợp lệ.

Tiếp tục với bài viết này về Nạp chồng và ghi đè hàm trong C ++

Mã mẫu cho chức năng đang tải

bao gồm sử dụng không gian tên lớp std Bổ sung {public: int add (int n1, int n2) {return n1 + n2} int add (int n1, int n2, int n3) {return n1 + n2}} int main (void) {Addition một cái cout< 

Đầu ra

Đầu ra- Nạp chồng và ghi đè hàm trong C ++ - Edureka

Giải trình

Trong chương trình trên, chúng ta có hai hàm trong lớp cộng. Cả hai đều có tên add. Một có 2 tham số và một có 3 tham số.

Trong hàm main, chúng ta tạo một đối tượng của phép cộng lớp được gọi là a. Chúng ta gọi các hàm add với 2 và 3 tham số tương ứng và các hàm add được gọi và chúng thực hiện phép cộng.

giá trị mặc định cho char trong java

Đây là cách diễn ra quá tải hàm.

Tiếp tục với bài viết này về Nạp chồng và ghi đè hàm trong C ++

Ghi đè chức năng

Khi một lớp dẫn xuất có một hàm trùng tên với một hàm của lớp cơ sở, nó được gọi là Ghi đè chức năng. Cả hai hàm phải có cùng tham số trong cả hai lớp.

Mã mẫu để ghi đè chức năng

#include using namespace std class BaseClass {public: void disp () {cout<<'Parent Class Function' } } class DerivedClass: public BaseClass{ public: void disp() { cout<<'Child Class Function' } } int main() { DerivedClass obj = DerivedClass() obj.disp() return 0 } 

Đầu ra:

Giải trình:

Trong chương trình trên, chúng tôi hiển thị hàm cơ bản, có cùng tên trong lớp dẫn xuất và lớp cơ sở. Ở đây đối tượng được tạo ra từ lớp dẫn xuất nên khi chúng ta gọi hiển thị chỉ có đối tượng lớp con được hiển thị.

Tiếp tục với bài viết này về Nạp chồng và ghi đè hàm trong C ++

Lệnh thực hiện ghi đè

Hãy xem xét mã:

#include using namespace std class BaseClass {public: void disp () {cout<<'Function of Parent Class' } } class DerivedClass: public BaseClass{ public: void disp() { cout<<'Function of Child Class' } } int main() { BaseClass obj = DerivedClass() obj.disp() return 0 } 

Đầu ra:

Giải trình:

Trong chương trình trên, chúng tôi hiển thị hàm cơ bản, có cùng tên trong lớp dẫn xuất và lớp cơ sở. Ở đây, sự khác biệt duy nhất so với chương trình trước đó là. Chúng ta tạo đối tượng của lớp con. Đối tượng lớp con được cung cấp tham chiếu của lớp cơ sở. Điều này cũng có thể được thực hiện bằng cách sử dụng một phương pháp khác,

Cú pháp

Parent_class_name :: function ()

Trong ví dụ trên, chúng tôi sử dụng nó như là

hàm tạo trong python là gì
BaseClass :: disp ()

Đây là một cách ghi đè khác.

Ghi đè chức năng VS Ghi đè chức năng

Quá tải chức năng Ghi đè chức năng
Phạm vi giống nhauPhạm vi khác nhau
Chữ ký phải khác nhau (ví dụ: tham số)Chữ ký phải giống nhau
Số lượng chức năng quá tải có thểChỉ có thể có một chức năng ghi đè
Có thể xảy ra mà không có tính kế thừaNó chủ yếu xảy ra do kế thừa

Như vậy chúng ta đã đến phần cuối của bài viết này về 'Nạp chồng và ghi đè hàm trong C ++'. Nếu bạn muốn tìm hiểu thêm, hãy xem bởi Edureka, một công ty học trực tuyến đáng tin cậy. Khóa đào tạo và cấp chứng chỉ Java J2EE và SOA của Edureka được thiết kế để đào tạo bạn về cả khái niệm Java cốt lõi và nâng cao cùng với các khung công tác Java khác nhau như Hibernate & Spring.

Có một câu hỏi cho chúng tôi? Vui lòng đề cập đến nó trong phần nhận xét của blog này và chúng tôi sẽ liên hệ lại với bạn trong thời gian sớm nhất.