Ví dụ về nạp chồng hàm trong C++

Nếu chúng ta tạo hai hoặc nhiều phần tử có cùng tên nhưng khác nhau về số lượng hoặc loại tham số, nó được gọi là quá tải C++. Trong C++, chúng ta có thể quá tải

Show
  • phương pháp,
  • các nhà xây dựng, và
  • thuộc tính được lập chỉ mục

Đó là bởi vì các thành viên này chỉ có tham số

Các kiểu nạp chồng trong C++ là

  • nạp chồng hàm
  • Quá tải toán tử
Ví dụ về nạp chồng hàm trong C++

Nạp chồng hàm C++

Nạp chồng hàm được định nghĩa là quá trình có hai hay nhiều hàm trùng tên nhưng khác nhau về tham số được gọi là nạp chồng hàm trong C++. Trong nạp chồng hàm, hàm được xác định lại bằng cách sử dụng các loại đối số khác nhau hoặc một số lượng đối số khác. Chỉ thông qua những khác biệt này, trình biên dịch mới có thể phân biệt giữa các chức năng

Ưu điểm của Nạp chồng hàm là nó làm tăng tính dễ đọc của chương trình vì bạn không cần sử dụng các tên khác nhau cho cùng một hành động

Ví dụ nạp chồng hàm C++

Hãy xem ví dụ đơn giản về nạp chồng toán tử trong C++. Trong ví dụ này, hàm toán tử void operator++() được định nghĩa (bên trong lớp Test)

Trong bài viết này, chúng ta sẽ tìm hiểu về một trong những tính chất quan trọng của khái niệm lập trình hướng đối tượng được gọi là nạp chồng hàm.  

Quá tải chức năng hoạt động như thế nào?

Nạp chồng hàm tuân theo một nguyên tắc đơn giản và đảm bảo rằng tên hàm vẫn giữ nguyên, trong khi danh sách các đối số và kiểu dữ liệu của chúng khác nhau tùy theo lập trình viên. Bất cứ khi nào một hàm bị quá tải và được gọi trong chương trình chính, nếu tập hợp và loại tham số thực tế đầu vào khớp với cú pháp của các đối số chính thức thì việc thực thi hàm sẽ diễn ra. Nếu không tìm thấy kết quả khớp chính xác thì việc thăng cấp các loại dữ liệu sẽ diễn ra (chuyển đổi kiểu tiêu chuẩn), chẳng hạn như chuyển đổi float thành double và trong trường hợp cuối cùng, nó biểu thị lỗi

Chương trình sau đại học. Phát triển web đầy đủ ngăn xếp

hợp tác với Caltech CTME Đăng ký ngay

Ví dụ về nạp chồng hàm trong C++

Giới thiệu về Nạp chồng hàm trong C++

Trong C++, chúng ta có khái niệm Lập trình hướng đối tượng (hay còn gọi là OOPS). Có các thuộc tính khác nhau trong OOPS, trong số đó chúng ta sẽ thảo luận về nạp chồng hàm. Mọi ngôn ngữ lập trình đều cung cấp khả năng sử dụng lại đoạn mã được viết một lần bằng các hàm. Nói chung, tùy thuộc vào khai báo của hàm mà lập trình viên quyết định số lượng tham số và loại tham số được truyền vào hàm. Các ngôn ngữ lập trình hỗ trợ các khái niệm OOPS có một tính năng bổ sung liên quan đến hàm, thường được gọi là nạp chồng hàm. Nó đề cập đến thực tế là chúng ta có thể có một số chức năng có cùng tên nhưng với các tham số khác nhau.  

Nạp chồng hàm trong C++ là gì?

Nạp chồng hàm là thuộc tính mà hai hay nhiều hàm có thể dùng chung tên nhưng không cùng danh sách đối số. Đây là một trong những tính năng nổi bật của C++. Quá tải chức năng cũng có thể được coi là đa hình thời gian biên dịch. Khi quan sát kỹ, tên vẫn giữ nguyên trong khi thứ tự, kiểu dữ liệu và toàn bộ danh sách đối số thay đổi. Chúng ta hãy xem một ví dụ về nạp chồng hàm trong C++

Thí dụ

#hàm1

void addPodium(int a, int b)

{

cout<

}

#hàm2

float addPodium(float a, float b, float c)

{

quay lại (a + b + c);

}

Trong ví dụ trên, chúng ta có thể quan sát thấy rằng có hai hàm được định nghĩa dưới dạng một đoạn mã trong đó tên của các hàm vẫn giữ nguyên là “addPodium” nhưng kiểu trả về và danh sách các đối số đầu vào và kiểu dữ liệu của chúng đã được thay đổi

Tại sao quá tải chức năng trong C ++ được sử dụng?

Các khái niệm OOPS cung cấp nhiều lợi thế so với các ngôn ngữ lập trình có cấu trúc thông thường. Quá tải chức năng được coi là đa hình thời gian biên dịch. Tính năng này của các khái niệm OOPS cho phép lập trình viên phát triển một hàm với tên không thay đổi, nhưng với hành vi thực thi khác, do đó làm cho mã dễ đọc hơn và có thể tái sử dụng.  

ví dụ 1. Quá tải bằng cách sử dụng các loại tham số khác nhau

Một chức năng có thể được quá tải theo nhiều cách khác nhau, một trong số đó là sử dụng các loại tham số khác nhau. Hãy để chúng tôi hiểu tình hình bằng cách xem ví dụ

#include

sử dụng không gian tên std;

phương thức in lớp {

công cộng

khoảng trống in (int i) {

cout << "giá trị nguyên. " << i << endl;

}

khoảng trống in (đôi f) {

cout << "giá trị động. " << f << endl;

}

khoảng trống in(char* c) {

cout << "giá trị ký tự. " << c << endl;

}

};

int main(void) {

phương thức in obj;

đối tượng. in(512);

đối tượng. in(90. 75);

đối tượng. print("Bục phát biểu");

trả về 0;

}

đầu ra.  

giá trị số nguyên. 512

giá trị thả nổi. 90. 75

giá trị ký tự. bục phát biểu

Chương trình trên có ba phương thức có cùng tên (in) nhưng có hành vi thực thi khác nhau. Nó nhận các loại đầu vào khác nhau thuộc các loại khác nhau và in chúng

Khóa học Full Stack Web Developer

Để trở thành chuyên gia về MEAN Stack Xem khóa học

Ví dụ về nạp chồng hàm trong C++

ví dụ 2. Quá tải bằng cách sử dụng số lượng tham số khác nhau

Một chức năng có thể được quá tải theo hai cách khác nhau. một trong số đó là bằng cách sử dụng một số tham số khác nhau. Hãy để chúng tôi hiểu tình hình bằng cách xem ví dụ

#include

sử dụng không gian tên std;

phương thức in lớp {

công cộng

void add(int i, int j) {

cout << "tổng là số nguyên. " << i+j << endl;

}

vô hiệu thêm (gấp đôi f) {

cout << "giá trị động. " << f << endl;

}

};

int main(void) {

phương thức in obj;

đối tượng. thêm(5,3);

đối tượng. thêm (90. 75);

trả về 0;

}

đầu ra.  

tổng số nguyên. số 8

giá trị thả nổi. 90. 75

Chương trình trên có hai phương thức có cùng tên (thêm) nhưng có hành vi thực thi khác nhau và bộ tham số khác nhau.  

Quy tắc nạp chồng hàm trong C++

Có một số quy tắc nhất định phải tuân theo khi quá tải một hàm trong C++. Hãy để chúng tôi có một cái nhìn tại một số trong số họ

  1. Các chức năng phải có cùng tên
  2. Các chức năng phải có các loại tham số khác nhau.  
  3. Các chức năng phải có một bộ tham số khác nhau
  4. Các chức năng phải có một chuỗi các tham số khác nhau.  

Nạp chồng hàm trong ví dụ C++

Chúng ta hãy xem một ví dụ về Nạp chồng hàm trong C++

#include

sử dụng không gian tên std;

thêm lớp

{

công cộng

int sum(int a,int b)

{

trả về a+b;

}

tổng float(phao a,phao b,phao c)

{

trả về a+b+c;

}

};

int chính (khoảng trống)

{

thêm obj;

cout<

cout<

trả về 0;

}

đầu ra

13

20. 12

Trong ví dụ trên, có hai phương thức tên 'tổng' các kiểu trả về khác nhau và các tham số đầu vào khác nhau và kiểu dữ liệu của chúng. Hàm đầu tiên nhận hai giá trị int và trả về tổng của chúng, hàm thứ hai nhận ba giá trị float và trả về tổng

Khóa học mới. Phát triển Full Stack cho người mới bắt đầu

Tìm hiểu Git Command, Angular, NodeJS, Maven và hơn thế nữa Đăng ký ngay

Ví dụ về nạp chồng hàm trong C++

Các loại nạp chồng hàm trong C++

Có hai kiểu nạp chồng hàm khác nhau trong C++. họ đang

  1. Quá tải thời gian biên dịch. Trong thời gian biên dịch, các chức năng bị quá tải bằng cách sử dụng các chữ ký khác nhau. Kiểu trả về của hàm, số lượng tham số và loại tham số được coi là chữ ký của hàm cụ thể đó
  2. Quá tải thời gian chạy. Trong thời gian chạy, các chức năng bị quá tải. Trong quá trình chạy, chức năng quá tải thời gian bị quá tải với một số tham số khác nhau

Nguyên nhân nạp chồng hàm trong C++

Có một số nguyên nhân gây ra quá tải hàm trong C++. Một số trong số họ được đề cập ở đây

1. Chuyển đổi loại

Chúng ta hãy xem một ví dụ về chuyển kiểu trong nạp chồng hàm trong C++

#include

sử dụng không gian tên std;

giá trị void (phao);

giá trị khoảng trống (int);

Giá trị void (float x)

{

tiêu chuẩn. cout << "Giá trị của x là. " <

}

giá trị khoảng trống (int y)

{

tiêu chuẩn. cout << "Giá trị của y là. " <

}

int chính ()

{

Giá trị(1. 2);

Giá trị(7);

trả về 0;

}

đầu ra.  

chính. cpp. Trong chức năng 'int main ()'

chính. cpp. 19. 10. lỗi. cuộc gọi quá tải 'Giá trị (gấp đôi)' không rõ ràng

19. Giá trị(1. 2);

      . ^

chính. cpp. 8. 6. Ghi chú. ứng viên. 'Giá trị vô hiệu (thả nổi)'

số 8. Giá trị void (float x)

      . ^~~~~

chính. cpp. 12. 6. Ghi chú. ứng viên. 'Giá trị trống (int)'

12. giá trị khoảng trống (int y)

      . ^~~~~

Chúng ta có thể thấy rằng tham chiếu đến hàm được gọi là không rõ ràng, chúng ta nghĩ rằng Giá trị (1. 2) sẽ được gọi trước và sau đó là Giá trị (7). Nhưng C++ coi mọi giá trị float là giá trị kép.  

2. Chức năng với đối số mặc định

Chúng ta hãy xem xét một ví dụ

#include

sử dụng không gian tên std;

giá trị khoảng trống (int);

giá trị khoảng trống (int, int);

giá trị khoảng trống (int x)

{

tiêu chuẩn. cout << "Giá trị của x là. " <

}

Giá trị void(int y,int z=8)

{

tiêu chuẩn. cout << "Giá trị của y là. " <

tiêu chuẩn. cout << "Giá trị của z là. " <

}

int chính ()

{

Giá trị(13);

trả về 0;

}

đầu ra.  

chính. cpp. Trong chức năng 'int main ()'

chính. cpp. 17. 9. lỗi. cuộc gọi quá tải 'Giá trị (int)' không rõ ràng

17. Giá trị(13);

      . ^

chính. cpp. 6. 6. Ghi chú. ứng viên. 'Giá trị trống (int)'

6. giá trị khoảng trống (int x)

      . ^~~~~

chính. cpp. 10. 6. Ghi chú. ứng viên. 'Giá trị trống (int, int)'

10. Giá trị void(int y,int z=8)

      . ^~~~~

Chúng ta có thể thấy rằng tham chiếu đến hàm được gọi là không rõ ràng, đó là do hàm được gọi theo hai cách khác nhau. Khi câu lệnh Giá trị (13) được gọi, trình biên dịch bị nhầm lẫn và gửi một thông báo mơ hồ.  

Khóa học Lập trình viên Java Full Stack

Hợp tác với HIRIST và HackerEarth KHÓA HỌC KHÁM PHÁ

Ví dụ về nạp chồng hàm trong C++

3. Chức năng với Pass by Reference

Chúng ta hãy xem xét một ví dụ

#include

sử dụng không gian tên std;

giá trị khoảng trống (int);

Giá trị vô hiệu (int &);

giá trị khoảng trống (int a)

{

tiêu chuẩn. cout << "Gia tri cua a la. " <

}

giá trị khoảng trống (int & b)

{

tiêu chuẩn. cout << "Giá trị của b là. " <

}

int chính ()

{

intx=1;

Giá trị(x);

trả về 0;

}

đầu ra

chính. cpp. Trong chức năng 'int main ()'

chính. cpp. 20. 12. lỗi. cuộc gọi quá tải 'Giá trị (int &)' không rõ ràng

20. Giá trị(x);

      . ^

chính. cpp. 7. 6. Ghi chú. ứng viên. 'Giá trị trống (int)'

7. giá trị khoảng trống (int a)

      . ^~~~~

chính. cpp. 12. 6. Ghi chú. ứng viên. 'Giá trị vô hiệu (int &)'

12. giá trị khoảng trống (int & b)

      .    

Chúng ta có thể thấy rằng tham chiếu đến hàm được gọi là mơ hồ

Nạp chồng hàm bằng cách thay đổi số lượng đối số

Một chức năng có thể được quá tải theo hai cách khác nhau. một trong số đó là bằng cách sử dụng một số tham số khác nhau. Hãy để chúng tôi hiểu tình hình bằng cách xem ví dụ

#include

sử dụng không gian tên std;

phương thức in lớp {

công cộng

void add(int i, int j) {

cout << "tổng là số nguyên. " << i+j << endl;

}

vô hiệu thêm (gấp đôi f) {

cout << "giá trị động. " << f << endl;

}

};

int main(void) {

phương thức in obj;

đối tượng. thêm(5,3);

đối tượng. thêm (90. 75);

trả về 0;

}

đầu ra.  

tổng số nguyên. số 8

giá trị thả nổi. 90. 75

Chương trình trên có hai phương thức có cùng tên (thêm) nhưng có hành vi thực thi khác nhau và bộ tham số khác nhau.  

khóa học miễn phí. Nguyên tắc cơ bản về lập trình

Tìm hiểu kiến ​​thức cơ bản về lập trình Đăng ký ngay

Ví dụ về nạp chồng hàm trong C++

Nạp chồng hàm bởi các loại đối số khác nhau

Một chức năng có thể được quá tải theo nhiều cách khác nhau, một trong số đó là sử dụng các loại tham số khác nhau. Hãy để chúng tôi hiểu tình hình bằng cách xem ví dụ

#include

sử dụng không gian tên std;

phương thức in lớp {

công cộng

khoảng trống in (int i) {

cout << "giá trị nguyên. " << i << endl;

}

khoảng trống in (đôi f) {

cout << "giá trị động. " << f << endl;

}

khoảng trống in(char* c) {

cout << "giá trị ký tự. " << c << endl;

}

};

int main(void) {

phương thức in obj;

đối tượng. in(512);

đối tượng. in(90. 75);

đối tượng. print("Bục phát biểu");

trả về 0;

}

đầu ra.  

giá trị số nguyên. 512

giá trị thả nổi. 90. 75

giá trị ký tự. bục phát biểu

Chương trình trên có ba phương thức có cùng tên (in) nhưng có hành vi thực thi khác nhau. Nó nhận các loại đầu vào khác nhau thuộc các loại khác nhau và in chúng

Ưu điểm của nạp chồng hàm trong C++

Dưới đây là một số ưu điểm của việc sử dụng nạp chồng hàm trong C++

  1. Nó tiết kiệm mức sử dụng bộ nhớ và cho phép sử dụng lại mã
  2. Nó làm cho chương trình thực thi nhanh hơn
  3. Với nạp chồng hàm, lập trình viên có thể phát triển các hàm có tính chất khác nhau nhưng cùng tên
  4. Nó đơn giản và dễ hiểu mã hơn

Nhược điểm của nạp chồng hàm trong C++

Dưới đây là một số nhược điểm của việc sử dụng nạp chồng hàm trong C++

  1. Trong nạp chồng hàm, nhược điểm chính là không thể nạp chồng các hàm có kiểu trả về khác nhau
  2. Trong trường hợp hàm tĩnh, các tham số tương tự không thể bị quá tải

Sự khác biệt giữa quá tải chức năng và quá tải toán tử

Dưới đây là một số khác biệt giữa nạp chồng hàm và nạp chồng toán tử trong C++

Quá tải chức năng

Quá tải toán tử

Người ta có thể quá tải một hàm có cùng tên, nhưng với các tham số khác nhau

Người ta có thể quá tải các toán tử như +, -, /

Khi một hàm bị quá tải, nó có cùng tên nhưng cách thực thi khác với các tham số khác nhau

Khi một toán tử bị quá tải, hoạt động phụ thuộc vào toán hạng

Nó cho phép người dùng gọi theo nhiều cách khác nhau

Nó cho phép người dùng có một ý nghĩa mở rộng, khác với ý nghĩa được xác định trước

Sự khác biệt giữa nạp chồng hàm và ghi đè hàm

Dưới đây là một số khác biệt giữa nạp chồng hàm và ghi đè hàm trong C++

Quá tải chức năng

Ghi đè chức năng

Nó cho phép lập trình viên có hai hoặc nhiều hàm có cùng tên nhưng khác đối số

Trong trường hợp ghi đè phương thức, hai phương thức có cùng tên và cùng tham số, nhưng một phương thức hiện diện ở lớp cha và phương thức kia ở lớp con

Chúng có cùng phạm vi

Họ có phạm vi khác nhau

Xảy ra trong thời gian biên dịch

Xảy ra trong thời gian chạy

Quá tải chức năng có thể xảy ra mà không cần kế thừa.  

Nó chỉ xảy ra khi kế thừa xảy ra

Nếu bạn mong muốn đạt được các kỹ năng cần thiết để làm việc trong vai trò CNTT năng động, bổ ích và đầy thử thách - chúng tôi sẽ hỗ trợ bạn. Khám phá những cơ hội vô tận thông qua Chương trình Sau Đại học sáng tạo này trong khóa học Phát triển Web Full Stack được thiết kế bởi các đối tác của chúng tôi tại Caltech CTME. Đăng ký ngay hôm nay

Sự kết luận

Chúng tôi hy vọng rằng bài viết này đã giúp bạn hiểu rõ về nạp chồng hàm trong C++. Nếu bạn đang muốn nâng cao hơn nữa các kỹ năng phát triển phần mềm của mình, chúng tôi khuyên bạn nên xem Chương trình Sau đại học của Simplilearn về Phát triển Web Full Stack. Khóa học này được thiết kế với sự cộng tác của Caltech CTME và có thể giúp bạn trau dồi các kỹ năng liên quan cũng như giúp bạn sẵn sàng cho công việc

Nếu bạn có bất kỳ câu hỏi hoặc nghi ngờ nào, vui lòng gửi chúng trong các bình luận bên dưới, nhóm của chúng tôi sẽ liên hệ lại với bạn sớm nhất

Tìm Chương trình sau đại học của chúng tôi trong Chương trình đào tạo trực tuyến về phát triển web Full Stack tại các thành phố hàng đầu

NameDatePlacePost Chương trình sau đại học về Phát triển Web Full Stack Nhóm bắt đầu vào ngày 11 tháng 1 năm 2023,
Đợt cuối tuầnChi tiết CityView của bạnChương trình sau đại học về Phát triển Web Full Stack, SydneyCohort bắt đầu vào ngày 26 tháng 1 năm 2023,
Weekend batchSydneyView DetailsPost Graduate Program in Full Stack Web Development, MelbourneCohort starts on 15th Feb 2023,
Weekend batchMelbourneView Details

Thông tin về các Tác giả

Ví dụ về nạp chồng hàm trong C++
đơn giản

Simplilearn là một trong những nhà cung cấp dịch vụ đào tạo trực tuyến hàng đầu thế giới về Tiếp thị kỹ thuật số, Điện toán đám mây, Quản lý dự án, Khoa học dữ liệu, CNTT, Phát triển phần mềm và nhiều công nghệ mới nổi khác

Ví dụ nạp chồng hàm trong C là gì?

Nạp chồng hàm là gì? . Các hàm này có cùng tên nhưng chúng hoạt động trên các loại đối số khác nhau và trả về các loại dữ liệu khác nhau. allows us to have multiple functions with the same name but with different function signatures in our code. These functions have the same name but they work on different types of arguments and return different types of data.

Nạp chồng hàm là gì và cho ví dụ?

Khi một tên hàm bị quá tải với nhiều công việc khác nhau thì đó gọi là Quá tải hàm. Trong quá tải chức năng, tên "Hàm" phải giống nhau và các đối số phải khác nhau. Nạp chồng hàm có thể coi là một ví dụ về tính năng đa hình trong C++.

Quá tải với ví dụ là gì?

Trong Java, hai hoặc nhiều phương thức có thể có cùng tên nếu chúng khác nhau về tham số (số lượng tham số khác nhau, loại tham số khác nhau . Các phương thức này được gọi là phương thức quá tải và tính năng này được gọi là nạp chồng phương thức. Ví dụ. hàm void() {. }

Ví dụ về nạp chồng toán tử là gì?

Nạp toán tử trong C++ . Ví dụ: chúng ta có thể quá tải một toán tử '+' trong một lớp như Chuỗi để chúng ta có thể nối hai chuỗi chỉ bằng cách sử dụng + .