?? 15-3.txt
字號:
/* 范例:15-3動態配置內存 */
#include <iostream.h>
struct data
{
char name[20];
};
class teacher
{
private:
char name1[20];
public:
data *nick;
teacher(void) // 無初始化的構造函數
{
nick = new data; // 配置內存
cout << "teacher(void) class Constructor \n";
}
teacher(char *ch) /* 傳入參數且初始化的構造函數,將name1初始化 */
{
nick = new data; // 配置內存
strcpy(name1,ch); // 將ch傳入的字符復制到name1
cout << "teacher(void) class Constructor \n";
}
~teacher(void)
{ delete nick; // 為C++釋放內存的指令
cout << "teacher class Destructor \n";
}
void ShowHandLen(void)
{
cout << "nick 地址: " << (void *)&nick << endl;
cout << "nick 內容值: " << nick << endl;
cout << "name 地址" << &nick->name << endl;
cout << "name 內容值: "<< nick->name << endl;
/* cyh動態配置的name1 */
cout << "cyh name1 地址: "<<(void *)&name1<<endl;
}
void display(void)
{
// 將name1的地址輸出
cout << "name1的地址: " << (void *)&name1 << endl;
// 將name1的內容輸出
cout << "name1的內容值: " << name1 << endl;
// 將cyh1動態配置的nick地址輸出
cout << "nick 的地址: " << &nick << endl;
}
};
void classTest(void)
{
teacher *cyh = new teacher; /* 構造方式6,動態配置一塊teacher對象的存儲
空間,將配置空間的地址傳給對象指針*cyh */
cout << "以teacher類動態配置內存大小 :" \ <<sizeof(teacher)<<" bytes\n";
cout << "cyh對象存放的內容值: " << (cyh) << endl;
cout << "cyh對象地址: " << &cyh << endl;
// 將字符串復制至name[20]
strcpy(cyh->nick->name,"GreatTeacherCYH");
cout << "字符串的地址: " << &("GreatTeacherCYH") << endl;
cyh->ShowHandLen();
delete cyh;
//-------------------------------------------------
char ch[20] = "Great TeacherCYH";
teacher *cyh1 = new teacher(ch);
/* 構造方式7,動態配置一塊teacher對象的存儲空間,將配置空間的地址傳給對
象指針*cyh1,調用其構造函數,并傳入ch將name1做初始化設定 */
cout << "以teacher類動態配置內存大小 :" \
<<sizeof(teacher)<<" bytes\n";
cyh1->display();
cout << "cyh1內容: " << cyh1 << endl;
cout << "cyh1大小: " <<sizeof(cyh1)<<" bytes"<<endl;
cout << "cyh1地址: " << &cyh1 << endl;
cout << "ch的地址: " << &ch << endl;
cout << "ch[20]的大小: " << sizeof(ch)<<"bytes"<< endl;
delete cyh1;}
//---------------------------------------------------------------------------
void main(void)
{
classTest();
getchar();
}
程序執行結果﹕
teacher(void) class Constructor
以teacher類動態配置內存大小 :24 bytes
cyh對象存放的內容值: 00682F48
cyh對象地址: 0065FDCC
字符串的地址: 0041B20B
nick 地址: 00682F5C
nick 內容值: 00682F64
name 地址00682F64
name 內容值: GreatTeacherCYH
cyh name1 地址: 00682F48
teacher class Destructor
teacher(void) class Constructor
以teacher類動態配置內存大小 :24 bytes
name1的地址: 006833F8
name1的內容值: Great TeacherCYH
nick 的地址: 0068340C
cyh1內容: 006833F8
cyh1大小: 4 bytes
cyh1地址: 0065FDC8
ch的地址: 0065FDB4
ch[20]的大小: 20bytes
teacher class Destructor
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -