关于析构函数的调用时间有关问题

关于析构函数的调用时间问题
stringbad  headline2("letture prey");   stringbad是我自定义的一个类
callme2(headline2);
void callme2(stringbad sb);这是callme2的函数原型
我想问一下在调用完callme2(headline2);后,析构函数会不会被调用释放掉headline2的空间。
以下是类的析构和构造函数,还有类定义
#include<iostream>
class stringbad
{
private:
char * str;
int len;
static int num_strings;
public:
stringbad(const char * s);
stringbad();
~stringbad();
friend std::ostream & operator<<(std::ostream & os,const stringbad & st);
};


stringbad::stringbad(const char * s)
{
len=std::strlen(s);
str=new char[len+1];
std::strcpy(str,s);
num_strings++;
cout<<num_strings<<":\""<<str
<<"\"object created \n";
}


stringbad::~stringbad()
{
cout<<"\""<<str<<"\" object deleted, ";
--num_strings;
cout<<num_strings<<" left\n";
delete []str;
}
------解决方案--------------------
函数这样写要进行拷贝构造,而默认拷贝构造是浅拷贝,
你成员类的成员变量里有指针,需要进行深拷贝,
函数最好传指针或者引用
------解决方案--------------------
请正确实现拷贝构造函数。编译器帮你实现的implicit copy constructor是你程序出错的根源。