Có vẻ như đây sẽ là một bản sao, nhưng có thể nó chỉ hiển nhiên như vậy chưa được hỏi ...Kiểm tra xem biến có được khởi tạo
Đây có phải là cách kiểm tra đúng hay không (không phải con trỏ) được khởi tạo trong một lớp C++?
class MyClass
{
void SomeMethod();
char mCharacter;
double mDecimal;
};
void MyClass::SomeMethod()
{
if (mCharacter)
{
// do something with mCharacter.
}
if (! mDecimal)
{
// define mDecimal.
}
}
ý của bạn là "được xác định"? bạn có nghĩa là "có một giá trị" là "khởi tạo"? – NirMH
Tất cả các biến luôn có giá trị (chúng được xác định). Thông thường các trình biên dịch khởi tạo các biến cho một số giá trị tiêu chuẩn, nhưng tôi không chắc chắn nếu điều này là một phần của định nghĩa của C++, theo như tôi biết nó không phải là. Đó là một thực hành tốt để khởi tạo tất cả các biến trước khi sử dụng chúng, để chúng không bao giờ có một số giá trị ngẫu nhiên hoặc phụ thuộc vào thực thi.Sau đó, bạn có thể kiểm tra giá trị hiện tại của họ bất kỳ lúc nào trước khi sử dụng chúng. – Giorgio
@Jay, bạn thực sự cần phải reword câu hỏi của bạn để phù hợp với những từ mà C++ sử dụng. Theo quy tắc C++, mCharacter luôn luôn được LUÔN LUÔN định nghĩa trong MyClass trong ví dụ của bạn. 'char mCharacter' xuất hiện ở đó có nghĩa là nó được định nghĩa. Bây giờ bạn cần phải suy nghĩ về những gì bạn thực sự cần bởi "là mCharacter xác định". Bạn có nghĩa là, "giao cho?". C++ không thể kiểm tra điều đó. "Có giá trị khác với giá trị khởi tạo" không? Có thể, nhưng sau đó, ví dụ của bạn không có bất kỳ giá trị khởi tạo nào, do đó bạn cũng không thể kiểm tra điều đó, trừ khi bạn thêm initializer và constructor. Trong hình thức này, câu hỏi phải được ghi lại – Andrei