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

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

作品介紹

免費下載

廠商軟體

建構子與解建構子

使用建構子來建立物件

格式

範例

類別名(參數1,2,3…)

{//程式片斷}

myclass(char *a)

{long=strlen(a);}


建構主要為設定屬性(變數)的起始值
建構子必須宣告為public,否則在宣告物件時無法被呼叫
建構子的宣告與函數相似,但是沒有回傳值

//建構子範例
#include
<iostream.h>
#include
<string.h>
class String //開始宣告類別
{
private: //宣告屬性
char * test;
long len;
public: //宣告成員函數原型
String(char * i_string); //建構子
void showstring();
};

void String::showstring() //顯示字串內容
{
cout << "字串資料為 : " << test << " 長度為 : " << len << endl;
}

String::String(char * inputstring) //建構子
{
cout << "建構子已被呼叫!\n";
len = strlen(inputstring);
//取得傳入字串的長度
test = new char [len + 1]; //配置記憶體
strcpy(test,inputstring); //複製字串
}

void main() //主程式開始
{
char teststring[13] = "字串測試資料";
String myString(teststring);
//宣告字串物件
myString.showstring(); //呼叫myString的成員函數showstring,顯示字串內容
} //主程式結束


建構子的名稱必須與類別名相同

起始值設定序列:例如:

String(charr * mystring):len(strlen(mystring)

將len的值直接設為strlen(mystring)的回傳值


預設建構子

mystring()
{    //   }

複製建構子

Mystring(mystring & teststring)
{
name=teststring.name;
index=teststring.getindex();
}

範例

//建構子的種類
#include <iostream.h>
#include <string.h>
class String //開始宣告類別
{
private:
//宣告屬性
char * test;
long len;
public: //宣告成員函數原型
String(); //預設建構子
String(const char * i_string); //建構子
String(String & copystring); //複製建構子
void show_string();
};

void String::show_string() //顯示字串內容
{
cout << "string : " << test << " length : " << len << endl;
}

String::String() //預設建構子
{ cout << "這是預設建構子 !\n"; }

String::String(const char * i_string) : len (strlen(i_string)) //一般建構子
{
cout << "這是標準建構子 !\n";
test = new char [len + 1];
//配置記憶體
strcpy(test,i_string); //複製字串
}

String::String(String & copystring) : len (copystring.len) //複製建構子
{
cout << "這是複製建構子 !\n";
test = new char [len + 1];
strcpy(test,copystring.test);
}

void main() //主程式開始
{
String testString("My string");
//宣告字串物件,呼叫一般建構子
String copyString(testString); //呼叫複製建構子
String C_String; //呼叫預設建構子
cout << "-----------------------\n";
cout << "testString : \n";
testString.show_string();
//呼叫testStirng的成員函數show_string,顯示字串內容
cout << "copyString : \n";
copyString.show_string();
//呼叫copyStirng的成員函數show_string,顯示字串內容
} //主程式結束


解建構子

格式

範例

~類別名()

{//程式片斷}

~myclass()

{delete []test;}

//建構子範例
#include <iostream.h>
#include <string.h>
class String //開始宣告類別
{
private:
//宣告屬性
char * test;
long len;
public: //宣告成員函數原型
String(char * i_string); //建構子
~String(); //解建構子
void showstring();
};

void String::showstring() //顯示字串內容
{
cout << "字串資料為 : " << test << " 長度為 : " << len << endl;
}

String::String(char * inputstring) //建構子
{
cout << "建構子已被呼叫!\n";
len = strlen(inputstring);
//取得傳入字串的長度
test = new char [len + 1]; //配置記憶體
strcpy(test,inputstring); //複製字串
}

String::String() //解建構子
{
cout << "解建構子已被呼叫!\n";
delete [] test;
}

void main() //主程式開始
{
char teststring[13] = "字串測試資料";
String myString(teststring);
//宣告字串物件
myString.showstring(); //呼叫myString的成員函數showstring,顯示字串內容
} //主程式結束



本網頁由
昱得資訊工作室製作(C) Copyright Valor-Studio since in 1993

 

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