Đây là lớp C++ mà tôi đã tạo bằng n số con trỏ.tạo nhiều con trỏ NULL cùng một lúc
class SomeClass
{
private:
int* ptr1;
int* ptr2;
...
int* ptrn;
private:
// constructors, destructors, and methods
};
Trong giai đoạn khởi, tôi muốn làm cho tất cả những người con trỏ trỏ tới NULL (hoặc làm cho con trỏ trỏ đến NULL theo mặc định khi chúng được khai báo) chứ không phải làm như vậy:
void SomeClass::MakePtrNull()
{
ptr1 = NULL;
ptr2 = NULL;
...
ptrn = NULL;
}
Có bất kỳ phương pháp dễ dàng nào để hoàn thành mục tiêu này? Tôi chỉ tự hỏi nếu có bất kỳ cách nào để tránh gõ n dòng ptr = NULL; trong chức năng của tôi. Cảm ơn trước.
THÊM dựa trên các câu trả lời mà tôi đã nhận được cho đến nay: Thật không may, những con trỏ phải được tách biệt, vì chúng được sử dụng cho các mục đích khác nhau. Tôi đã tạo ra tên của các con trỏ như vậy chỉ để làm cho một điểm của những gì tôi đang cố gắng để làm, nhưng mỗi con trỏ có một mục đích hoàn toàn khác nhau. Tôi đoán tôi sẽ phải làm cho họ trỏ đến NULL như tôi đã làm rồi. Cảm ơn câu trả lời của bạn.
Lưu ý rằng nếu lớp không có người dùng khai báo hàm tạo, SomeClass() sẽ có tất cả con trỏ bằng không. Điều đó có nghĩa rằng bạn chỉ có thể làm * this = SomeClass(); và nó sẽ làm cho tất cả các con trỏ trỏ tới con trỏ null. –
@litb, trong các thử nghiệm của tôi, chỉ các trường hợp tĩnh của SomeClass có tất cả các con trỏ được đánh số không; trường hợp tự động và heap nhận được bất cứ điều gì đã được nằm xung quanh trong ngăn xếp hoặc đống. –
giả sử không có hàm tạo do người dùng khai báo, sau đó SomeClass() được khởi tạo như trái ngược với "a" trong {SomeClass a; }. Giá trị SomeClass() khởi tạo, đệ quy, tất cả các thành viên của nó. Điều này sẽ làm cho bất kỳ thành viên trỏ đến con trỏ null. Nếu bạn định nghĩa một biến tự động, và nó không có một hàm tạo khai báo người dùng, nó không được khởi tạo. Bạn sẽ phải làm ví dụ {SomeClass a = SomeClass(); } –