Tác dụng của từ const trong khai báo hàm

Sign Up

Log In

Tác dụng của từ const trong khai báo hàm

Cho mình hỏi về tác dụng của const trong các khai báo hàm sau:

const int func(int value);

int func(const int value);

int func(int value) const;

int func(int const value);

1 Like

int func(int value) const;
có nghĩa là các tham số đưa vào hàm func ở dạng tham biến hay tham chiếu thì đều k được thay đổi giá trị của các biến đó, chỉ được đọc giá trị, cái này thường dùng khi tham số vào hàm là tham biến hoặc tham chiếu, còn tham trị như ví dụ bạn viết trên thì k cần, vì tham trị thực chất là nó tạo ra 1 biến mới lưu giữ giá trị của biến đưa vào hàm phục vụ cho riêng hàm đó, dùng xong hàm biến đó sẽ tự được dọn dẹp ( có thể dùng ở trường hợp truyền vào 1 sô và chỉ muốn hàm đó dùng giá trị đó, k được thay giá trị (phạm vị hàm))

int func(const int value); tương đương int func(int const value);
thì khác hơn cái trên 1 chút, nãy viết int func(int value1, int value2) const; thì có nghĩa tất cả các tham số đầu vào đều k được thay đổi, còn viết int func(const int value1, int value2); thì chỉ mỗi value1 k được thay đổi, còn value 2 có thể thay đổi , cũng như trên, cái này chỉ dùng khi tham sô vào hàm là tham chiếu hoặc tham biến, tham trị k cần dùng ( có thể dùng ở trường hợp truyền vào 1 sô và chỉ muốn hàm đó dùng giá trị đó, k được thay giá trị (phạm vị hàm))

Là biến hằng (không thể thay đổi đó mà)

@hell6w9rld 1: sai nhé

Vincent_Viet:

Vincent_Viet:

const int func(int value);

Giá trị trả về của hàm phải là const

Vincent_Viet:

Vincent_Viet:

int func(const int value);

int func(int const value);

2 thằng này là 1, value sẽ không thể thay đổi giá trị trong hàm, bát kể là tham biến hay tham trị, thường dùng cho setValue(const int value)

Vincent_Viet:

Vincent_Viet:

int func(int value) const;

Thằng này chỉ dùng trong class, struct, các biến của nó không được phép thay đổi trong function đó.
VD:

class MyClass
{
    int id;
    int getId() const
    {
        this->id = 1; // báo lỗi
        return this->id;
    }
};

như trên thì m chỉ sai mỗi cái đầu
const int func(int value);
nhỉ

int func(int value) const;

Bạn hiểu sai thằng này

Còn thằng

const int func(int value);

thì những phiên bản gần đây của C++ không khuyến khích sử dụng.

Dark.Hades:

Dark.Hades:

int func(int value) const;

Bạn hiểu sai thằng này

int func(int value) const;
có nghĩa là các tham số đưa vào hàm func ở dạng tham biến hay tham chiếu, tham trị thì đều k được thay đổi giá trị của các biến đó, chỉ được đọc giá trị, cái này thường dùng khi tham số vào hàm là tham biến hoặc tham chiếu, còn tham trị như ví dụ bạn viết trên thì k cần, vì tham trị thực chất là nó tạo ra 1 biến mới lưu giữ giá trị của biến đưa vào hàm phục vụ cho riêng hàm đó, dùng xong hàm biến đó sẽ tự được dọn dẹp ( có thể dùng ở trường hợp truyền vào 1 sô và chỉ muốn hàm đó dùng giá trị đó, k được thay giá trị (phạm vị hàm))

kiểu viết trên qua c++ học m mới thầy, có nghĩa là mở rộng của c++ so với c.

Bạn vào link này, tất cả code lỗi đều ở đây:
wandbox.org

[Wandbox]三へ( へ՞ਊ ՞)へ ハッハッ

#include
#include

class MyClass
{
int id;

//
const int getId()
{
const int i = 1;
return i;
}

int setId(const int &id)
{
id = 1;
}

int getI

// int func() const {} chỉ dùng cho OOP

1 Like

Home
Categories
FAQ/Guidelines
Terms of Service
Privacy Policy


83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?