首页 范文大全 古典文学 职场知识 中国文学 公文书信 外国名著 寓言童话 百家讲坛 散文/诗歌 美文欣赏 礼仪知识 民俗风情
  • 工作总结
  • 工作计划
  • 心得体会
  • 竞聘演讲
  • 会议发言
  • 爱国演讲
  • 就职演说
  • 开业开幕
  • 思想学习
  • 征文演讲
  • 经验材料
  • 述职报告
  • 调研报告
  • 工作汇报
  • 年终总结
  • 申报材料
  • 学习体会
  • 企划方案
  • 活动方案
  • 技巧经验
  • 模板范例
  • 思想宣传
  • 经济工作
  • 工作报告
  • 组织人事
  • 反腐倡廉
  • 慰问贺电
  • 先进事迹
  • 思想汇报
  • 入党申请书
  • 党会发言
  • 先进性教育
  • 入团申请书
  • 个人简历
  • 演讲稿
  • 调查报告
  • 实习报告
  • 和谐社会
  • 观后感
  • 读后感
  • 作文范文
  • 自我鉴定
  • 讲话稿
  • 自查报告
  • 书面作业_4.doc

    时间:2021-02-02 20:30:34 来源:蒲公英阅读网 本文已影响 蒲公英阅读网手机站

    相关热词搜索:作业 书面 doc

     书面作业_4 1 、 简答题:

     (1) 构造函数的作用是什么? 它有哪些特点?

     作用是对对象进行初始化

     函数名必须与其类名相同,一个类可以有多个构造函数(即构造函数重载),也可以没有构造函数,构造函数可以有参数,也可以没有参数;在创建对象时,系统会自动调用构造函数 (2) 析构函数的功能是什么? 它有哪些特点?

     在对象消亡时,自动完成清除工作。

     函数名必须与其类名相同,但该函数前面加~。没有参数,也没有返回值,而且不能重载,在一个类中只能有一个析构函数。当撤销对象时,编译器会自动调用析构函数。

     (3) 拷贝构造函数有什么作用? 在哪些情况下会调用拷贝构造函数? 用一个已有的对象来初始化一个被创建的同类对象,是一种特殊的成员函数。

     用类的一个对象去初始化另一个对象;用对象作为函数实参传递给形参时,调用拷贝构造函数;如果函数的返回值是类的对象,函数调用返回时,调用拷贝构造函数。

     (4) 类型转换构造函数有什么作用? 它有什么特点? 实现类型的自动转换; 只有一个参数

     不是复制构造函数 编译系统会自动调用类型转换构造函数,建立一个临时对象 / 临时变量 (5) 在用 new、delete 运算符创建、删除对象时,是否会调用构造函数和析构函数?

      用 new 运算符动态创建对象时也会自动调用构造函数;

      用 delete 运算符删除对象时也会自动调用析构函数 。

     2 、 教材 p206 第 第 6 题 #include<iostream> using namespace std;

     class CSample{

     int x; public:

     CSample(){ cout << "C1" << endl;}

     CSample(int n){

      x = n;

      cout << "C2,x=" << n << endl;

     } }; int main(){

     CSample array1[2];

     CSample array2[2] = { 6,8 };

     CSample array3[2] = { 12 };

     CSample *array4 = new CSample[3];

     return 0; }

      3 、 教材 p206 第 第 7 题 #include <iostream>

     using namespace std; class Sample{ public:

     int v;

     Sample() { };

     Sample(int n) :v(n) { };

     Sample(Sample & x) { v = 2 + x.v; }

     }; Sample PrintAndDouble(Sample o) {

     cout << o.v;

     o.v = 2 * o.v;

     return o; } int main() {

     Sample a(5);

     Sample b = a;

     Sample c = PrintAndDouble(b);

     cout << endl;

     cout << c.v << endl;

     Sample d;

      d = a;

     cout << d.v; }

      4 、请按下列要求编写程序:

     (1)声明一个教师类 Teacher,该类的私有数据成员有:工号(num)、姓名(char *pName)、年龄(age)。请定义相应的成员函数来设置、读取这些私有成员,并为该类定义构造函数、拷贝构造函数、类型转换构造函数(只包含工号一个参数)、析构函数;

     (2)在 main 函数里先定义 Teacher 类的一个对象 wang(201,”王伟”,35),然后以它为基础复制一个对象 li,再将 li 的工号修改为 202,姓名修改为“李华”,最后把这两个对象的信息输出到屏幕上。

     (提示:姓名是字符指针类型,需要动态分配、释放内存空间,分别在构造函数、析构函数中实现,还要在拷贝构造函数中分配新内存空间,以达到深拷贝目的。请参考 程序代码 4.doc (5) 改进版本) #include<cassert> #include<iostream> using namespace std; class Teacher; class Teacher { public:

     Teacher(int num, const char* name, int age)

     {

      assert(num >= 0);

      assert(name);

      assert(age >= 0 && age <= 200);

     this->num = num;

      int len = this->str_len(name);

      this->name = new char[len + 1];

      str_copy(this->name, name);

      this->age = age;

     }

      Teacher(const Teacher& teacher)

     {

      this->num = teacher.num;

      assert(teacher.name);

      int len = this->str_len(teacher.name);

      this->name = new char[len + 1];

      this->str_copy(this->name, teacher.name);

      this->age = teacher.age;

     }

      virtual~Teacher()

     {

      if (this->name)

     delete this->name;

      this->name = NULL;

      }

      Teacher& operator=(const Teacher& teacher)

     {

      if (this != &teacher)

      {

     this->num = teacher.num;

     assert(teacher.name);

     if (this->name)

      delete this->name;

      int len = this->str_len(teacher.name);

     this->name = new char[len + 1];

     this->str_copy(this->name, teacher.name);

     this->age = teacher.age;

      }

     return *this;

     }

     public:

     void setNum(int num)

     {

      assert(num >= 0);

      this->num = num;

     }

      void setAge(int age)

     {

      assert(age >= 0 && age <= 200);

      this->age = age;

     }

      void setName(const char* name)

     {

      assert(name);

      if (this->name)

     delete this->name;

      int len = this->str_len(name);

      this->name = new char[len + 1];

      this->str_copy(this->name, name);

     }

      int getAge()const

      {

      return this->age;

     }

     int getNum()const

     {

      return this->num;

     }

     const char* getName()const

     {

      return this->name;

     }

     void showTeacherInfo()const

     {

      cout << "工号:" << this->num << endl;

      cout << "姓名:" << this->name << endl;

      cout << "龄:" << this->age << endl;

     } private:

     int str_len(const char* src)

     {

      assert(src);

      int len = 0;

      while (*src++&&++len);

      return len;

     }

      void str_copy(char* dest, const char* src)

     {

      assert(src);

      while (*dest++ = *src++);

     } private:

     int

      num;

     char* name;

     int

      age; };

     void main() {

     Teacher WangWei(201, "王伟", 35);

     Teacher LiHua(WangWei);

     LiHua.setNum(202);

     LiHua.setName("李华");

      WangWei.showTeacherInfo();

     cout << "-------------我割线----------------" << endl;

     LiHua.showTeacherInfo(); }

    • 范文大全
    • 职场知识
    • 精美散文
    • 名著
    • 讲坛
    • 诗歌
    • 礼仪知识