测试这个程序需要一个友元输出函数。
下面就是一个简单的代码,与真正的模板类string差得太远了。
希望对你有所启发。
#include
#include
using namespace std;
class MyString
{
public:
MyString(const char*); //constructor
MyString(int = 0, char = '\0'); //write function 不如:char &operator[](int i);更好用
MyString(const MyString&); //copy constructor
~MyString(); //destructor
const char* c_str(); //conversion
static int getNumberOfObjects(); //这个函数用来跟踪MString对象的引用计数
private:
char *str;
static int numberOfObjects;
friend ostream &operator<<(ostream&,const MyString&);
};
int MyString::numberOfObjects=0;
MyString::MyString(const char *c)
{
str=new char[strlen(c)+1];
strcpy(str,c);
numberOfObjects++;
}
MyString::MyString(int i,char ch)
{
str[i]=ch;
}
MyString::MyString(const MyString &ms)
{
++numberOfObjects;
str=new char[strlen(ms.str)+1];
}
MyString::~MyString()
{
--numberOfObjects;
delete []str;
}
const char* MyString::c_str()
{
char *c=new char[strlen(str)+1];
strcpy(c,str);
return c;
}
int MyString::getNumberOfObjects()
{
return numberOfObjects;
}
ostream &operator<<(ostream &os,const MyString &ms)
{
return os<
int main()
{
MyString ms1("newstring");
cout<
return 0;
}
有什么疑难再说!