Lập trình C++ - Nạp chồng
Nạp chồng (Overloading) trong C++
Trong một lớp, ta có thể tạo ra nhiều hàm với cùng một tên gọi nhưng khác nhau các dữ liệu đầu vào hoặc tham số, đó gọi là nạp chồng. Trong C++, Chúng ta có thể nạp chồng:
- Phương thức (methods),
- Phương thức thiết lập(constructors),
- indexed properties
Các kiểu quá nạp chồng trong C++:
- Nạp chồng phương thức
- Nạp chồng các toán tử
Nạp chồng phương thức
Trong một lớp, ta có thể tạo ra nhiều hàm với cùng một tên gọi nhưng khác nhau các dữ liệu đầu vào hoặc tham số, đó gọi là nạp chồng phương thức.
Lới ích của việc quá tải phương thức là chúng ta có thể khai báo cùng một tên phương thức trong cùng chương trình, không cần phải khai báo tên khác cho cùng một hành đông.
Ví dụ nạp chồng phương thức C++
Ví dụ trong lớp Cal sau có hai phương thức add nhưng khác nhau về tham số:
#include <iostream>
using namespace std;
class Cal {
public:
static int add(int a, int b) {
return a + b;
}
static int add(int a, int b, int c)
{
return a + b + c;
}
};
int main(void) {
Cal C;
cout << C.add(10, 20) << endl;
cout << C.add(12, 20, 23);
system("pause");
return 0;
}
Kết quả:
30
55
Nạp chồng toán tử trong C++
Việc nạp chồng toán tử thường được sử dụng trong C++ là định nghĩa lại toán tử của C++.
Lợi ích của nạp chồng toán tử là thực hiện các thao tác khác nhau trên cùng một toán hạng.
#include <iostream>
using namespace std;
class Test
{
private:
int num;
public:
Test() : num(8) {}
void operator ++()
{
num = num + 2;
}
void Print() {
cout << "The Count is: " << num;
}
};
int main()
{
Test tt;
++tt; // calling of a function "void operator ++()"
tt.Print();
system("pause");
return 0;
}
Kết quả:
The Count is: 10