c++ primer plus的问题
这个是头文件:
#include <iostream>
using namespace std;
#ifndef STRINGBAD_H
#define STRINGBAD_H
class String
{
private:
char * str;
int len;
static int num_strings;
static const int CINLIM=80;
public:
String(const char* s);
String();
String(const String &);
~String();
int length()const{return len;}
String &operator=(const String &s);
String &operator=(const char *);
char &operator[](int i);
const char &operator[](int i) const;
friend bool operator<(const String &st,const String &st2);
friend bool operator>(const String &st1,const String &st2);
friend bool operator==(const String &st,const String &st2);
friend ostream & operator<<(ostream &os,const String &st);
friend ostream & operator>>(ostream &os,const String &st);
static int HowMany();
};
#endif
这个是CPP文件:
#include <cstring>
#include "string1.h"
using std::cin;
using std::cout;
int String::num_strings=0;
int String::HowMany()
{
return num_strings;
}
String::String(const char *s)
{
len = std::strlen(s);
str = new char[len+1];
std::strcpy(str,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];
std::strcpy(str,st.str);
}
String::~String()
{
--num_strings;
delete[] str;
}
String & String::operator=(const String &st)
{
if(this==&st)
return *this;
delete[] str;
len = st.len;
str = new char[len+1];
std::strcpy(str,st.str);
return *this;
}
std::ostream &operator<<(std::ostream &os,const String &st)
{
os<<st.str;
return os;
}
请问:String::String(const String &st)
{
num_strings++;
len = st.len;
str = new char[len+1];
std::strcpy(str,st.str);
}
中的st.len中的len是怎样得知长度的
[解决办法]
在:
String::String(const char *s)
{
len = std::strlen(s);
str = new char[len+1];
std::strcpy(str,s);
num_strings++;
}
构造函数里面就会先得到了len