使用动态分配的指针初始化成员指针
Initializing a member pointer with a dynamically allocated pointer
是否可以使用动态分配的指针来初始化成员指针?我应该删除析构函数中的指针吗?
class Apple
{
public:
Apple(int* counter) : counter_(counter);
~Apple(); // should I delete counter_ here?
private:
int* counter_;
}
int main()
{
someptr = new int;
apple_fruit = Apple(someptr);
delete someptr;
return 0;
}
我是 C++ 的新手,对于如何最好地处理动态分配的内存仍然有些困惑,尤其是当它用于初始化时。
是的,可以使用指向动态分配数据的指针来初始化成员指针。我已经在 class 需要访问另一个实例(动态分配)class.
的实例中看到了这种情况。
只有当你绝对需要这样做时,才是好的做法。如果我们要处理的只是一个整数(如您的示例所示),则不要使用指针并存储实际的整数。
对于删除,不要删除class析构函数中的指针,除非最初分配数据的是您的class。您在 main() 中删除它的直觉是正确的,因为它是在 main() 中创建的。
是否可以使用动态分配的指针来初始化成员指针?我应该删除析构函数中的指针吗?
class Apple
{
public:
Apple(int* counter) : counter_(counter);
~Apple(); // should I delete counter_ here?
private:
int* counter_;
}
int main()
{
someptr = new int;
apple_fruit = Apple(someptr);
delete someptr;
return 0;
}
我是 C++ 的新手,对于如何最好地处理动态分配的内存仍然有些困惑,尤其是当它用于初始化时。
是的,可以使用指向动态分配数据的指针来初始化成员指针。我已经在 class 需要访问另一个实例(动态分配)class.
的实例中看到了这种情况。只有当你绝对需要这样做时,才是好的做法。如果我们要处理的只是一个整数(如您的示例所示),则不要使用指针并存储实际的整数。
对于删除,不要删除class析构函数中的指针,除非最初分配数据的是您的class。您在 main() 中删除它的直觉是正确的,因为它是在 main() 中创建的。