c++高级程序设计语言实验十构造函数和析构函数

实验名称

构造和析构的次序,初始列表的使用

实验目的

  1. 理解构造函数和析构函数的作用。
  2. 掌握构造函数和析构函数的使用。
  3. 了解带参数的构造函数,重载构造函数,默认构造函数。
  4. 掌握类成员初始化,构造类成员,构造对象的顺序。

实验任务

  1. 验证教材第十二章例子程序ch12_12(第274页 修正版第281页)。注:需要将教材上的头文件和其他源文件的所有代码放在一起,写在一个单独源文件ch12_12.cpp中。
  2. 结合习题,理解构造函数和析构函数的使用。

12.1(第280页 修正版第288页) ex12_01

写出下列程序的输出

#include<iostream>

using  namespace std;

class MyClass {

   public:

      MyClass();

      MyClass(int);

      ~MyClass();

      void Display();

   protected:

      int number;

};

MyClass::MyClass() {

   cout<<"Constructing normally.\n";

}

MyClass::MyClass(int m):number(m) {

   //number=m;

   cout<<"Constructing with a number:"<<number<<endl;

}

void MyClass::Display() {

   cout<<"Display a number:"<<number<<endl;

}

MyClass::~MyClass() {

   cout<<"Destructing\n";

}

int main() {

   MyClass obj1;

   MyClass obj2(20);

  

   obj1.Display();

   obj2.Display();

   return 0;

}

12.2(第281页 修正版第289页) ex12_02

创建一个Employee类,该类中有字符数组,表示姓名、街道地址、市、省和邮政编码,把表示构造函数、ChangeName()、Display()的函数原型放在类的定义中,构造函数初始化每个成员,Display()函数把完整的对象数据打印出来。其中的数据成员是保护的,函数是公共的。

实验内容

  1. ch12_12

#include<iostream>

#include<cstring>

using namespace std;

class StudentID

{

   public:

      StudentID(int id=0)

      {

          value = id;

          cout << "Assigning student id"<< value << endl;

      }

      ~StudentID()

      {

          cout << "Destructing id" << value<< endl;

      }

      private:

          int value;

};

class Student

{

public:

   Student(char * pName="no name",int ssID = 0):id(ssID){

      cout <<"Constructing student" << pName<< endl;

      strncpy(name,pName,sizeof(name));

      name[sizeof(name)-1]='\-';

   } 

   private:

      char name[20];

      StudentID id;

};

int main()

{

   Student s("Randy",9818);

   Student t("Jenny");

   return 0;

}

  1. ex12_01

  1. ex12_02

#include<iostream>

 #include<cstring>

 using namespace std;

class Employee

{

private:

      string p[5];

public:

   Employee(string name,string address,string city,string pro,string post)

   {

      p[0]=name;

      p[1]=address;

      p[2]=city;

      p[3]=pro;

      p[4]=post;

   }

   void ChangeName(string name)

   {

      p[0]=name;

   }

   void Display()

   {

      cout <<"name: "<<p[0]<<"  address: "<<p[1]

      <<" city: "<<p[2]<<" province: "<<p[3]<<" postcode: "<<p[4]<< endl;

   }

         

};

 int main()

 {

   Employee employee1("Brook","zcst","zhuhai","guangdong","545454");

   employee1.Display();

   return 0;

 }

小结

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值