Từ khóa const trong C ++ – sử dụng tự do?

Dưới đây là một số bài báo tuyệt vời và một cuốn sách mà tôi tìm thấy giải thích những lợi ích của việc sử dụng const:

Tôi có thể đề xuất câu châm ngôn sau đây cho bạn không?

Nếu một đối tượng / biến có thể đủ điều kiện là hằng số, thì nó phải là. Tệ nhất, nó sẽ không mất bất cứ điều gì. Tốt nhất, bạn sẽ ghi lại vai trò của đối tượng / biến trong mã của mình và nó sẽ cho phép trình biên dịch có cơ hội tối ưu hóa mã của bạn hơn nữa.

Một số trình biên dịch bỏ qua việc khai thác tiềm năng tối ưu hóa với việc sử dụng ‘const’ và điều đó đã khiến nhiều chuyên gia bỏ qua việc sử dụng các tham số không đổi theo giá trị khi nó có thể được sử dụng. Thực hành này đòi hỏi nghiêm ngặt hơn, nhưng nó sẽ không có hại. Tệ nhất, bạn không mất gì, nhưng cũng không thu được gì và tốt nhất, bạn thắng khi sử dụng cách tiếp cận này.

Đối với những người dường như không hiểu tiện ích của một hằng số trong tham số theo giá trị của một hàm / phương thức … đây là một ví dụ ngắn giải thích tại sao:

.cpp

void WriteSequence(int const *, const int);

int main()
{
    int Array[] = { 2, 3, 4, 10, 12 };
    WriteSequence(Array, 5);
}


#include <iostream>
using std::cout;
using std::endl;
void WriteSequence(int const *Array, const int MAX)
{
    for (int const * i = Array; i != Array + MAX; ++i)
      cout << *i << endl;
}

Điều gì sẽ xảy ra nếu tôi loại bỏ const ở phía trước int MAX và tôi đã viết MAX + 1 bên trong như thế này?

void WriteSequence(int Array[], int MAX)
{
    MAX += MAX;
    for (int * i = Array; i != Array + MAX; ++i)
      cout << *i << endl;
}

Chương trình của bạn sẽ sụp đổ! Bây giờ, tại sao ai đó lại viết “MAX + = MAX;” ? Có lẽ lỗi do con người, có thể ngày hôm đó lập trình viên không được khỏe hoặc có lẽ đơn giản là lập trình viên không biết cách viết mã C / C ++. Nếu bạn có const, mã sẽ không được biên dịch!

Mã an toàn là mã tốt và bạn không tốn bất kỳ chi phí nào nếu thêm “const” khi có nó!

Đây là câu trả lời từ một bài đăng khác cho một câu hỏi tương tự:

“const là vô nghĩa khi đối số được truyền bằng giá trị vì bạn sẽ không sửa đổi đối tượng của người gọi.”

Sai lầm.

Đó là về việc tự ghi lại mã của bạn và các giả định của bạn.

Nếu mã của bạn có nhiều người làm việc trên đó và các chức năng của bạn không tầm thường thì bạn nên đánh dấu “const” bất kỳ và mọi thứ mà bạn có thể. Khi viết mã sức mạnh công nghiệp, bạn nên luôn cho rằng đồng nghiệp của mình là những kẻ thái nhân cách đang cố gắng giúp đỡ bạn bằng mọi cách mà họ có thể (đặc biệt vì sau này thường là chính bạn).

Bên cạnh đó, như ai đó đã đề cập trước đó, nó có thể giúp trình biên dịch tối ưu hóa mọi thứ một chút (mặc dù đó là một cảnh quay dài).

Đây là liên kết: câu trả lời .