- 論壇徽章:
- 14
|
folklore 發(fā)表于 2013-11-06 08:31 ![]()
回復(fù) 2# bruceteen
s+s1 是個臨時String,不能被作為 String & operator=(String &s) 的參數(shù),除非參數(shù)改為 const String& s- class String
- {
- public:
- String( const char* str );
- String( const String& s );
- ~String();
- String& operator=( const String& s );
- String operator+( const String& s ) const;
- private:
- char* data_;
- };
- #include <cstring>
- String::String( const char* str )
- {
- data_ = new char[strlen(str)+1];
- strcpy( data_, str );
- }
- String::String( const String& s )
- {
- data_ = new char[strlen(s.data_)+1];
- strcpy( data_, s.data_ );
- }
- String::~String()
- {
- delete[] data_;
- }
- String& String::operator=( const String& s )
- {
- if( this == &s )
- return *this;
- delete[] data_;
- data_ = new char[strlen(s.data_)+1];
- strcpy( data_, s.data_ );
- return *this;
- }
- String String:: operator+( const String& s ) const
- {
- String tmp( "" );
- delete[] tmp.data_;
- tmp.data_ = new char[strlen(data_)+strlen(s.data_)+1];
- strcpy( tmp.data_, data_ );
- strcat( tmp.data_, s.data_ );
- return tmp;
- }
- int main()
- {
- String s("hello" );
- String s1("world" );
- String s3("");
- s3 = s + s1;
- return 0;
- }
復(fù)制代碼 |
|