Delphi VJ VB VC 討論 聯繫 首頁
MS VC 參考文件

 運算子
 輸出與輸入
 流程控制
 陣列
 指標應用
 建立函數
 參數傳遞
 動態配置記憶體
 類別物件
 建構子與解建構子
 this 指標
 例外處理
 資料流
 過載運算子
 fsteram 類別

作品介紹

免費下載

廠商軟體

over過載運算子

預設的=運算子。

//使用預設的=運算子
#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

 

本網站全部內容係屬【昱得資訊工作室】版權所有,轉載必究,
非經正式書面同意,不得將全部或部分內容,以任何方式轉載於其他網站或用於任何商業行為