C++ 特定情况下的类析构函数

C++ 特定情况下的类析构函数,c++,class,C++,Class,下面的类是否需要析构函数~MyString(){delete ptr} class MyString { char* ptr; int size; public: ~MyString() { delete ptr}; MyString(char* str) : ptr(str),size(strlen(ptr)){}; }; 如果我这样初始化它 int main() { MyString s1("ddddd"); // no new --> no delete

下面的类是否需要析构函数~MyString(){delete ptr}

class MyString
{
  char* ptr;
  int size;
 public:
  ~MyString() { delete ptr};
   MyString(char* str) : ptr(str),size(strlen(ptr)){}; 
};
如果我这样初始化它

int main()
{
 MyString s1("ddddd");  // no new --> no delete ?
}

不!此处不需要
delete
。从来没有,因为构造函数从其他人那里得到了指针。传递指针的人应该注意它在清理过程中会发生什么。事实上,我想你的课甚至都坏了。我不确定(因为我不是C++专家),但是你必须要有一个拷贝,代码< char *<代码>。p>
仅供参考:您知道std::string存在吗?

如果您使用的是c++11,此共享指针将负责删除指针。如果您使用C++的以前版本,>,StaskPythPosix和AutoPyPosits可以是选项。
#include <memory>

class MyString
{
  shared_ptr<char> ptr;
  int size;
public:
 ~MyString() {};
 MyString(shared_ptr<char> str) : ptr(str),size(strlen(ptr.get())){}; 
};
#包括
类MyString
{
共享ptr;
整数大小;
公众:
~MyString(){};
MyString(shared_ptr str):ptr(str),size(strlen(ptr.get()){};
};