|
|
預設的=運算子。
//使用預設的=運算子
#include <iostream.h>
#include <string.h>class String //開始宣告類別
{
private: //宣告屬性
char *
string;
long len;
public: //宣告成員函數原型
String(const
char *); //建構子
void show_string();
};
void String::show_string() //顯示物件內容
{
cout << "string : " << string << " string address :
";
cout << (void *)string; //將字串指標轉型為指向void型態的值
//可輸出string指標的位址值
cout << " length : " << len <<
endl;
}
String::String(const char * i_string) //建構子
{
len = strlen(i_string); //取得傳入字串的長度
string = new char [len + 1]; //配置記憶體
strcpy(string,i_string); //複製字串
}
void main() //主程式開始
{
String A_String("My "); //宣告字串物件
String * B_String = new String ("string"); //動態配置String物件
A_String = *B_String; //運用預設的 = 運算子
cout << "A_String...\n"; //輸出字串物件的內容
A_String.show_string();
cout << "B_String...\n";
B_String->show_string();
} //主程式結束 |
過載字串類別的=運算子。
//過載字串類別的=運算子
#include <iostream.h>
#include <string.h>
class String //開始宣告類別
{
private: //宣告屬性
char * string;
long len;
public: //宣告成員函數原型
String();
String(const char *);
void show_string();
String & operator= (String &); //重載
= 運算子
};void String::show_string() //顯示物件內容
{cout << "string : "
<< string << " string address : ";
cout << (void *)string; //將字串指標轉型為指向void型態的值
//輸出string指標的位址值
cout << " length : " << len <<
endl;
}
String::String()
{
len = 0;
string = new char [len + 1];
string[0] = '\0';
}
String::String(const char * i_string) //建構子
{
len = strlen(i_string); //取得傳入字串的長度
string = new char [len + 1]; //配置記憶體
strcpy(string,i_string); //複製字串
}
String & String::operator= (String & str)
{
cout << "overloading operator\n";
delete string;//釋放string屬性的記憶體空間
len = str.len;
string = new char [len + 1]; //重新配置記憶體空間
strcpy(string, str.string); //複製字串值
return * this; //將物件自己回傳
}
void main() //主程式開始
{
String A_String("My string"); //宣告字串物件
String B_String;
B_String = A_String; //呼叫重載的
= 運算子
cout << "A_String...\n";
A_String.show_string();
cout << "B_String...\n";
B_String.show_string();
} //主程式結束 |
過載的+運算子,用於合併字串物件。
//過載的+運算子,用於合併字串物件
#include <iostream.h>
#include <string.h>class String //開始宣告類別
{
private: //宣告屬性
char * string;
long len;
public: //宣告成員函數原型
String();
String(const char *);
void show_string();
String & operator= (String &); //重載
= 運算子
String operator+ (String &); //重載 + 運算子
};
void String::show_string() //顯示物件內容
{
cout << "string : " << string <<
" string address : ";
cout << (void *)string; //將字串指標轉型為指向void型態的值
//輸出string指標的位址值
cout << " length : " << len <<
endl;
}
String::String()
{
len = 0;
string = new char [len + 1];
string[0] = '\0';
}
String::String(const char * i_string) //建構子
{
len = strlen(i_string); //取得傳入字串的長度
string = new char [len + 1]; //配置記憶體
strcpy(string,i_string); //複製字串
}
String & String::operator= (String & str)
{
delete string;//釋放string屬性的記憶體空間
len = str.len;
string = new char [len + 1]; //重新配置記憶體空間
strcpy(string, str.string); //複製字串值
return * this; //將物件自己回傳
}
String String::operator+ (String & str)
{
char * strbuf = new char [len + str.len + 1];//動態配置陣列大小
strcpy(strbuf, string); //複製字串值
strcat(strbuf, str.string); //合併字串
String retstr(strbuf); //以 strbuf
字串變數建立字串物件
delete strbuf; //釋放 strbuf 字串的空間
return retstr; //傳回字串物件
}
void main() //主程式開始
{
String A_String("My "); //宣告字串物件
String B_String("string"), C_String;
C_String = A_String + B_String; //呼叫重載的
= 運算子與 + 運算子
C_String.show_string(); //顯示C_String內容
} //主程式結束 |
|
|
本網頁由昱得資訊工作室製作(C) Copyright Valor-Studio
since in 1993
|
|
|
|