C++ 特定情况下的类析构函数
下面的类是否需要析构函数~MyString(){delete ptr}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
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++的以前版本,
#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()){};
};