[Học OOP] Bài 1: Các đặc điểm mới trong c++

1. Toán tử phạm vi (::)

Toán tử phạm vi :: được dùng để truy cập các biến toàn cục trong trường hợp có biến cục bộ trùng tên.

Ví dụ:

  • x=::y+1301;

Cụ thể hơn:

#include <iostream>
using namespace std;
// phan khai bao bien toan cuc:
int g = 20;

int main()
{
    // phan khai bao bien cuc bo:
    int g = 10;
    cout << g << " " << ::g << endl;
    system("pause");
    return 0;
}

Kết quả khi chạy chương trình trên là “10 20“. Do ::g được quy định sử dụng biến toàn cục khi có toán tử phạm vi.

2. Tham số mặc nhiên

Tham số mặc nhiên là tham số có sẵn giá trị, và nó được dùng khi người dùng không cung cấp đối số, lúc này giá trị mặc định sẽ được sử dụng.

Cách khai báo các bạn có thể tham khảo hàm xuat() trong ví dụ dưới đây:

#include <iostream>
using namespace std;

void xuat(int a, int b = 222, int c = 333)
{
    cout << a << " " << b << " " << c << endl
}

int main()
{
    xuat(1, 2, 3);
    xuat(1, 2);
    xuat(1);
    system("pause");
    return 0;
}

Kết quả

Chú ý void xuat(int a, int b = 222, int c = 333), những vị trí int b = 222, int c = 333 được gán sẵn giá trị và nó được dùng khi người dùng cung không đầy đủ đối số.

Những trường hợp khai báo tham số mặc nhiên không thành công

ví dụ void xuat(int a=111, int b, int c) tham số mặc nhiên phải được khai báo theo thứ tự lần lượt từ phải sang trái.

Tóm lại:

  • Nếu cung cấp đủ tham số -> dùng tham số truyền vào.
  • Nếu không đủ tham số -> dùng tham số mặc nhiên.

3. Tái định nghĩa hàm (Function Overloading)

Quy tắc overloading: Các hàm trùng tên nhưng phải khác nhau về tham số (bao gồm số lượng, thứ tự, và kiểu dữ liệu).

ví dụ: Bạn muốn viết hàm tìm max cho kiểu int và double thông thường bạn sẽ khai báo 2 hàm như sau:

int timmaxint(int a, int b);
double timmaxdouble(double a, double b);

Tuy nhiên bạn có thể sử dụng Function Overloading trong trường hợp này như sau:

int timmax(int a, int b);
double timmax(double a, double b);

Như quy tắc đã nêu bên trên chỉ cần khác nhau về tham số, bao gồm số lượng, thứ tự, và kiểu dữ liệu.

#include <iostream>
using namespace std;
int timmax(int a, int b)
{
    if (a > b) 
        return a;
    else 
        return b;
}
double timmax(double a, double b)
{
    if (a > b)
        return a;
    else
        return b;
}
int main()
{
    cout << "max = " << timmax(10, 1000) << endl;
    cout << "max = " << timmax(1.4, 2.5) << endl;
    system("pause");
    return 0;
}

chương trình sẽ tự chọn hàm phù hợp với kiểu tham số mà bạn gọi:

4. Hàm Inline

Hàm inline hay còn gọi là hàm nội tuyến.

Nó yêu cầu trình biên dịch copy code vào trong chương trình thay vì thực hiện lời gọi hàm như thông thường, nó giúp giảm thời gian chạy chương trình. Các bạn lưu ý chỉ dùng hàm inline đối với hàm có cấu trúc đơn giản, ví dụ như sau:

inline int Max(int a, int b)
{
   return a > b ? a : b;
}

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *