77范文网 - 专业文章范例文档资料分享平台

书面作业_4

来源:网络收集 时间:2018-11-12 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

书面作业_4 1、 简答题:

(1) 构造函数的作用是什么? 它有哪些特点? 作用是对对象进行初始化

函数名必须与其类名相同,一个类可以有多个构造函数(即构造函数重载),也可以没有构造函数,构造函数可以有参数,也可以没有参数;在创建对象时,系统会自动调用构造函数

(2) 析构函数的功能是什么? 它有哪些特点? 在对象消亡时,自动完成清除工作。

函数名必须与其类名相同,但该函数前面加~。没有参数,也没有返回值,而且不能重

载,在一个类中只能有一个析构函数。当撤销对象时,编译器会自动调用析构函数。

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

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

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

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

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

用delete运算符删除对象时也会自动调用析构函数 。 2、 教材p206第6题

#include using namespace std;

class CSample{ };

int main(){ }

CSample array1[2];

CSample array2[2] = { 6,8 }; CSample array3[2] = { 12 }; CSample *array4 = new CSample[3]; return 0; int x;

CSample(){ cout << \ << endl;} CSample(int n){ }

x = n;

cout << \ << n << endl;

public:

3、 教材p206第7题

#include 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) { }

int main() { }

Sample a(5); Sample b = a;

Sample c = PrintAndDouble(b); cout << endl; cout << c.v << endl; Sample d; cout << d.v; cout << o.v; o.v = 2 * o.v; return o;

d = a;

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

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

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

(提示:姓名是字符指针类型,需要动态分配、释放内存空间,分别在构造函

数、析构函数中实现,还要在拷贝构造函数中分配新内存空间,以达到深拷贝目的。请参考 程序代码4.doc (5) 改进版本)

#include #include using namespace std; class Teacher; class Teacher { public:

virtual~Teacher() {

if (this->name)

delete this->name; this->name = NULL;

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; }

this->num = num;

int len = this->str_len(name); this->name = new char[len + 1]; str_copy(this->name, name); this->age = age;

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

assert(num >= 0); assert(name);

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

}

Teacher& operator=(const Teacher& teacher) { }

if (this != &teacher) { }

return *this;

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;

public:

int getAge()const

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); void setAge(int age) { }

assert(age >= 0 && age <= 200); this->age = age; void setNum(int num) { }

assert(num >= 0); this->num = num;

};

{ }

int getNum()const { }

const char* getName()const { }

void showTeacherInfo()const { }

int str_len(const char* src) { }

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

int num; char* name; int age;

assert(src);

while (*dest++ = *src++); assert(src); int len = 0;

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

cout << \工号:\ << this->num << endl; cout << \姓名:\ << this->name << endl; cout << \龄:\ << this->age << endl; return this->name; return this->num; return this->age;

private:

private:

void main() {

Teacher WangWei(201, \王伟\, 35); Teacher LiHua(WangWei); LiHua.setNum(202); LiHua.setName(\李华\);

}

WangWei.showTeacherInfo();

cout << \我割线----------------\ << endl; LiHua.showTeacherInfo();

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库书面作业_4在线全文阅读。

书面作业_4.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/268747.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: