📄 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 + -