c++试题,这道题目谁有标准答案的,有的话发给我,谢谢!

2025-02-25 06:49:51
推荐回答(4个)
回答1:

这里有个完整版:http://hi.baidu.com/_%E2d_%B7%B3_%DE%B2%C2%D2/blog/item/efbfdd18e53108b14aedbc9c.html

#include

using namespace std;

class String{

friend ostream& operator<< (ostream&,String&);

public:

String(const char* str=NULL); //赋值构造兼默认构造函数(char)

String(const String &other); //赋值构造函数(String)

String& operator=(const String&other); //operator=

String operator+(const String &other)const; //operator+

bool operator==(const String&); //operator==

char& operator[](unsigned int); //operator[]

size_t size(){return strlen(m_data);};

~String(void) {delete[] m_data;}

private:

char *m_data;

};

inline String::String(const char* str)

{

if (!str) m_data=0;

else

{

m_data = new char[strlen(str)+1];

strcpy(m_data,str);

}

}

inline String::String(const String& other)

{

if(!other.m_data) m_data=0;

else

{

m_data=new char[strlen(other.m_data)+1];

strcpy(m_data,other.m_data);

}

}

inline String& String::operator=(const String& other)

{

if (this!=&other)

{

delete[] m_data;

if(!other.m_data) m_data=0;

else

{

m_data = new char[strlen(other.m_data)+1];

strcpy(m_data,other.m_data);

}

}

return *this;

}

inline String String::operator+(const String &other)const

{

String newString;

if(!other.m_data)

newString = *this;

else if(!m_data)

newString = other;

else

{

newString.m_data = new char[strlen(m_data)+strlen(other.m_data)+1];

strcpy(newString.m_data,m_data);

strcat(newString.m_data,other.m_data);

}

return newString;

}

inline bool String::operator==(const String &s)

{

if ( strlen(s.m_data) != strlen(m_data) )

return false;

return strcmp(m_data,s.m_data)?false:true;

}

inline char& String::operator[](unsigned int e)

{

if (e>=0&&e<=strlen(m_data))

return m_data[e];

}

ostream& operator<<(ostream& os,String& str)

{

os << str.m_data;

return os;

}

void main()

{

String str1="Hello!";

String str2="Teacher!";

String str3 = str1+str2;

cout<
}

回答2:

下面是你要的四个函数,标准答案日后补上,这是笔试题吧。
String::String(const char*str=NULL){
assert(str==NULL);
int slen=strlen(str);
m_data=new char(slen+1);
m_data[slen]='\0';
strcpy(m_data,str);
}

String::String(const String &other){
assert(other.m_data==NULL);
int slen=strlen(other.m_data);
this.m_data=new char(slen+1);
this.m_data[slen]='\0';
strcpy(m_data,other.m_data);
}

String::~String(void){
if(m_data!=NULL)
delete m_data;
}

String::String & operate=(const String &other){
assert(other.m_data==NULL);
int slen=strlen(other.m_data);
this.m_data=new char(slen+1);
this.m_data[slen]='\0';
strcpy(m_data,other.m_data);
}

希望可以帮到你~

回答3:

推荐你看看林锐的 高效C++编程,上面有对此题的解析

回答4:

竟然找答案,小心被告发,百度不允许求答案的。