Tôi yêu "const". Tôi muốn mọi biến và phương thức mà "phải là const" IS "const". Vấn đề là liệu một biến hay phương thức "phải là const" phụ thuộc vào các phương thức/biến tiếp tục trong cây gọi. Có một số công cụ, hoặc một số quá trình, để kiểm tra tĩnh một cơ thể của mã và làm "dưới lên en-const-ification"?tạo biến C++ const
Trả lời
Tôi không biết câu trả lời cho câu hỏi của bạn, nhưng tôi muốn tranh luận chống lại tuyên bố rằng
liệu một biến hoặc phương pháp "nên được const" phụ thuộc vào phương pháp/biến tiếp tục xuống trong cây gọi
Thực ra, const phải ở mức hợp lý. I E. bạn nên đánh dấu một cái gì đó const nếu nó không nên được thay đổi một cách hợp lý. Nếu sau này, bạn sẽ nhận được một lỗi biên dịch và sẽ cần phải xem xét lại sự thay đổi hoặc giả định ban đầu của bạn.
Quy tắc là:
nếu có điều gì là const, nó không nên được thay đổi
hơn
nếu có điều gì là không thay đổi trên thực tế, sau đó chúng ta hãy làm cho nó const
Có nhiều loại tĩnh khác nhau công cụ phân tích có thể làm điều đó. Gimpel Flexelint xuất hiện trong đầu bạn.
Đã nói điều đó, có thể nhận được kết quả dường như không hoàn toàn chính xác. Ví dụ: đưa ra điều này:
class Wibble {
Some_Implementation_Detail *stuff; //PIMPL idiom
public:
void set_something(int a) { stuff->set(a); }
};
sau đó set_something có thể được thực hiện const
. Đây là kỹ thuật chính xác, nhưng không phải là rất hữu ích, bởi vì nó không hợp lý const
ở tất cả trong trường hợp này.
- 1. C++ Khởi tạo biến cấu trúc const tĩnh
- 2. C khởi tạo cấu trúc const thành viên với biến const hiện tại
- 3. C: Gán "static const char * const" thành "const tĩnh char *"
- 4. Làm thế nào để khởi tạo một biến const bên trong một struct trong C?
- 5. thay đổi giá trị của biến const trong C++
- 6. C++ Sử dụng Biến Thành viên Const tĩnh
- 7. Phương pháp getter C++ const với khởi tạo lười biếng
- 8. C++: Ý nghĩa của const char * const *
- 9. Xóa const-ness khỏi biến
- 10. Khởi tạo chữ cho tham chiếu const
- 11. const Từ điển trong C#
- 12. const biến động, đăng ký biến động, tĩnh dễ bay hơi trong C++
- 13. C: Hành vi của từ khóa `const`
- 14. Cách khởi tạo thành viên const tĩnh trong C++?
- 15. C++ 11 Khởi tạo lớp mảng const tĩnh
- 16. C++ tạo chuỗi văn bản và biến
- 17. Làm thế nào để tạo ra một mảng const tĩnh của const char *
- 18. khởi tạo tĩnh const char * someVar
- 19. C++ ngữ nghĩa của `const` tĩnh vs 'const`
- 20. const và không có phương pháp const trong c + +?
- 21. C++ ảo Const Chức năng
- 22. phương pháp Const trong C#
- 23. Chức năng C++ trả về const char *
- 24. Khởi tạo một const char * tĩnh mảng
- 25. const vs new const
- 26. Cách khởi tạo trường const trong hàm tạo?
- 27. Con trỏ để const chuỗi trong C
- 28. C++ truyền qua tham chiếu const
- 29. Khởi tạo biến Chung từ Biến Kiểu C#
- 30. C++ chức năng: pass luận const không đến tham số tham chiếu const
Bạn không nên làm điều gì đó 'const' chỉ vì bạn tình cờ chỉ sử dụng các hàm thành viên/hàm' const' có 'const &'. Bạn nên làm cho nó 'const' bởi vì bạn biết nó khái niệm không nên thay đổi. – BoBTFish