Tôi có thể khai báo biến thành viên như const trong lớp C++? Nếu có, làm thế nào?Tôi có thể khai báo biến thành viên như const trong lớp C++? Nếu có, làm thế nào?
8
A
Trả lời
18
Bạn có thể - bạn đặt const ở phía trước tên loại.
class C
{
const int x;
public:
C() : x (5) { }
};
3
Chắc chắn, cách đơn giản nhất là như thế này nếu giá trị sẽ giống nhau trên tất cả các trường hợp của lớp học của bạn:
class X
{
public:
static const int i = 1;
};
Hoặc nếu bạn không muốn nó tĩnh:
class X
{
public:
const int i;
X(int the_i) : i(the_i)
{
}
};
8
Bạn khai báo nếu bạn không phải là thành viên. Lưu ý rằng việc khai báo một biến là const sẽ có tác động đáng kể đến cách lớp được sử dụng. Bạn chắc chắn sẽ cần một nhà xây dựng để khởi tạo nó:
class A {
public:
A(int x) : cvar(x) {}
private:
const int cvar;
};
Các vấn đề liên quan
- 1. biến thành viên có thể thay đổi tĩnh trong C++?
- 2. Làm thế nào tôi có thể khai báo một biến lớp như là dấu chấm động trong Moose?
- 3. Lỗi C++: Không khai báo thành viên
- 4. Khai báo các biến thành viên tĩnh như Java trong Mục tiêu-C
- 5. C++: Làm thế nào một hàm thành viên tĩnh công khai truy cập các biến thành viên cá thể riêng?
- 6. C++ Biến có thể khai báo trong phần thân hàm, nhưng không phải là thành viên của lớp?
- 7. Làm thế nào tôi có thể khai báo một biến toàn cục trong LLVM?
- 8. Không thể khai báo các thành viên cá thể trong một lớp tĩnh trong C#
- 9. Làm thế nào để khai báo một biến có thể chỉ chứa các lớp enum?
- 10. C++ Sử dụng Biến Thành viên Const tĩnh
- 11. Làm thế nào tôi có thể khởi tạo một biến const của một lớp cơ sở trong một lớp khởi tạo 'constructor trong C++?
- 12. const mảng thành viên lớp khởi
- 13. Tôi có thể khai báo biến trong html không?
- 14. Làm thế nào tôi có thể làm cho nẹp bỏ qua nơi tôi khai báo các biến của tôi?
- 15. Làm thế nào tôi có thể vượt qua một mảng const hoặc một mảng biến cho một hàm trong C?
- 16. Lớp thành viên tĩnh - khai báo lớp riêng tư và lớp thành viên riêng tư?
- 17. Tôi có nên xóa các thành viên chuỗi của một lớp C++ không?
- 18. Làm thế nào để khai báo một lớp trong C# để tôi có thể xâu chuỗi các phương thức?
- 19. Làm thế nào tôi có thể "bỏ đặt" một lớp đã được khai báo
- 20. Khai báo chuyên môn thành viên của lớp mẫu
- 21. Tại sao tôi không thể có một thành viên const tĩnh không tách rời trong một lớp học?
- 22. PHP - tại sao tôi không thể khai báo biến const tĩnh?
- 23. Làm thế nào tôi có thể khai báo trong C sharp a List với giá trị double có thể null?
- 24. Khai báo con trỏ const thành int?
- 25. lỗi: không có chức năng thành viên '__________' được khai báo trong lớp '_______'
- 26. Làm thế nào tôi có thể vượt qua một chức năng C thành viên ++ để một API C như một tham số
- 27. C++ lỗi: lớp đã không có thành viên mang tên
- 28. Có thể một lớp C++ bao gồm chính nó như là một thành viên?
- 29. Tôi có thể đặt biến thành viên công khai ở chế độ riêng tư trong lớp học có nguồn gốc không?
- 30. làm thế nào tôi có thể sử dụng cudaStreamAddCallback() với một phương pháp thành viên lớp học?
Điều đó sẽ cung cấp cho bạn một lỗi khác, như bạn đã khai báo i, mà không xác định nó. Bạn sẽ cần một "int X :: i;" một vài nơi. –
@ James - không phải vậy, nếu trình biên dịch cập nhật đủ để hỗ trợ các thành viên const tĩnh nội tuyến được khởi tạo, nơi chúng được khai báo. –
@ James: Tôi không tin đó là sự thật cho const int tĩnh - bạn không thực sự cần một định nghĩa riêng biệt bởi vì trình biên dịch coi nó như là một hằng số thực sự. – RichieHindle