Giả sử tôi có:C++: Tôi có nên khởi tạo thành viên con trỏ được chỉ định trong phần thân hàm tạo thành NULL không?
// MyClass.h
class MyClass
{
public:
MyClass();
private:
Something *something_;
}
// MyClass.cpp
MyClass::MyClass()
{
something_ = new Something();
}
Tôi có nên khởi something_ để NULL (hoặc 0) trong các nhà xây dựng danh sách khởi tạo của các nhà xây dựng MyClass? Hay điều đó là không cần thiết bởi vì tôi đang gán cho nó trong phần thân của nhà xây dựng? Thực hành được khuyến nghị là gì?
Tại sao không chỉ khởi tạo con trỏ ở nơi đầu tiên? 'MyClass :: MyClass(): something_ (new Something())' –
Ồ, đó có phải là phương pháp hay nhất không? – User
Luôn thích khởi tạo nhiệm vụ trong phần thân của hàm tạo. Và sử dụng một con trỏ thông minh như 'shared_ptr' hoặc' scoped_ptr' thay vì một con trỏ riêng để dọn dẹp tự động, ngay cả trong trường hợp ngoại lệ. –