#ifndef STRNG_H_
#define STRNG_H_
#include
using std::istream;
using std::ostream;
class String
{
char * str;
int len;
static int num_strings;
static const int CINLIM = 80;
public:
......
friend bool operator < (const String & st, const String & st2);
friend bool operator > (const String & st, const String & st2);
friend bool operator == (const String & st, const String & st2);
friend ostream & operator << (ostream & os, const String & st);
friend istream & operator >> (istream & is, String & st);
static int HowMany();
};
#endif
//string.cpp -- StringBad class methods
#include
#include "strng.h"
......
String::String(const char * s)
{
len = std::strlen(s);
str = new char[len + 1];
strcpy_s(str, len + 1, s);
num_strings++;
}
String::String()
{
len = 4;
str = new char[1];
str[0] = '\0';
num_strings++;
}
String::String(const String & st)
{
num_strings++;
len = st.len;
str = new char[len + 1];
strcpy_s(str, len + 1, st.str);
}
String::~String()
{
--num_strings;
delete[] str;
}
......
bool operator < (const String & st, const String st2)
{
return (std::strcmp(st.str, st2.str) < 0); //无法访问私有成员
}
bool operator > (const String & st, const String st2)
{
return st2 < st; //"<"不明确
}
bool operator == (const String & st, const String st2)
{
return (std::strcmp(st.str, st2.str) == 0); //无法访问私有成员
}
......
求助