2009-07-11 28 views

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) 
    {  
    } 
}; 
+2

Đ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. –

+2

@ 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. –

+1

@ 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

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