书面作业_4
更新时间:2024-06-27 05:17:01 阅读量: 综合文库 文档下载
书面作业_4 1、 简答题:
(1) 构造函数的作用是什么? 它有哪些特点? 作用是对对象进行初始化
函数名必须与其类名相同,一个类可以有多个构造函数(即构造函数重载),也可以没有构造函数,构造函数可以有参数,也可以没有参数;在创建对象时,系统会自动调用构造函数
(2) 析构函数的功能是什么? 它有哪些特点? 在对象消亡时,自动完成清除工作。
函数名必须与其类名相同,但该函数前面加~。没有参数,也没有返回值,而且不能重
载,在一个类中只能有一个析构函数。当撤销对象时,编译器会自动调用析构函数。
(3) 拷贝构造函数有什么作用? 在哪些情况下会调用拷贝构造函数? 用一个已有的对象来初始化一个被创建的同类对象,是一种特殊的成员函数。
用类的一个对象去初始化另一个对象;用对象作为函数实参传递给形参时,调用拷贝构造函数;如果函数的返回值是类的对象,函数调用返回时,调用拷贝构造函数。
(4) 类型转换构造函数有什么作用? 它有什么特点? 实现类型的自动转换; 只有一个参数 不是复制构造函数
编译系统会自动调用类型转换构造函数,建立一个临时对象 / 临时变量 (5) 在用new、delete运算符创建、删除对象时,是否会调用构造函数和析构函数?
用new运算符动态创建对象时也会自动调用构造函数;
用delete运算符删除对象时也会自动调用析构函数 。 2、 教材p206第6题
#include
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
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
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;
正在阅读:
书面作业_406-27
化工原理答案06-25
关于教师节的散文诗03-21
民主生活会发言提纲05-02
人体器官正常值(影像学)06-17
虚拟仪器试卷2答案05-13
关于高考的励志散文03-21
客服部操作手册06-12
华为ma5680t OLT开局配置07-11
国旗下冬季安全教育个人演讲稿合集03-24
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 书面
- 作业