⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 15-3.txt

📁 《C/C++完美演绎》源代码
💻 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 + -