C++OOP复习题-本部(to学生)(6)

2019-01-26 13:35

}

~X(){delete s;}

void display(){ cout<<\};

void main(){ X x1(\ X x2(x1); //拷贝构造(指针悬挂) X x3=x1; //拷贝构造(指针悬挂) x2.display(); x3.display(); } 答:

从上到下s=ok 依次为: s=ok

3、 请阅读程序,按顺序写出程序的运行结果。(P183,第5(1)题,ex6-5-3.cpp) #include class Number{ int n; public:

Number(int x):n(x){ }

Number& operator++(){ ++n; return *this; } Number& operator++(int){ n++; return *this;} friend Number &operator--(Number &o); friend Number &operator--(Number o, int);

void display(){ cout<<\ \};

Number &operator--(Number &o){ --o.n; return o; } Number &operator--(Number o,int){ o.n--; return o; } void main(){

Number N1(10); ++ ++ ++N1; N1.display(); N1++;

N1.display(); --N1;

N1.display(); N1-- -- --; N1.display(); } /*

This Number is: 13 This Number is: 14 This Number is: 13

This Number is: 13 */ 答:

从上到下This Number is: 13 依次为: This Number is: 14

This Number is: 13 This Number is: 13

4、 请阅读程序,按顺序写出程序的运行结果。(P183,第5(1)题,ex6-5-4.cpp)

——不要求! #include using namespace std; class Student{ private:

char *name; int age;

double Money; public:

Student(char *n=\Age=17,double Mey=1000.998):age(Age),Money(Mey){ name=new char[sizeof(n)+1]; strcpy(name, n); }

operator char*(){ return name; } //重载:函数调用运算符“()” operator int(){ return age; } //重载:函数调用运算符“()” operator double(){ return Money; } //重载:函数调用运算符“()” };

void main(){

Student s1(\阿瓦尔古丽\ char *Name=s1; //相当于:s1.char*() int Age=s1; //相当于:s1.int() double Money=s1; //相当于:s1.double()

cout<

cout<

从上到下阿瓦尔古丽 19 280001 依次为: 武昌鱼 17 1001

4.7. 补充题

1、 请阅读程序,根据对象的构造原则和构造顺序,按程序的执行顺序写出程序

的输出结果。注意:请在输出结果之前加“(*)”标示输出顺序。 #include using namespace std;

class A{ private: int x; public:

A():x(6){ cout<<\ }

A(int i):x(i){ cout<<\ }

~A(){ cout<<\ } };

class B{ int y; A x1[3]; A x2; public:

B(int j):y(j),x2(j){ cout<<\ }

~B(){ cout<<\ } };

void main(){

A a1(32), a2(50); B b1(23); } 答:

(1)A::A(int)--32 (2)A::A(int)--50 8)B::~B() 9)A::~A()

(((3)A::A()--6 (4)A::A()--6 (5)A::A()--6 (6)A::A(int)--23 (7)B::B(int)--23

(10)A::~A() (11)A::~A() (12)A::~A() (13)A::~A() (14)A::~A()

5. 程序设计题

5.1. 类与对象

5.1.1. 人员类Person

设计一个用于人事管理的人员类Person。具体要求如下:

(1)人员类Person具有四个数据成员:姓名name(字符指针char*类型)、身

份证号码sid(字符数组char[20]类型)、性别sex(char类型,男性’M’&女性’F’)、出生日期birthday。注意,不必考虑身份证中的可能有的日期与出生日期的一致性。其中,

a)出生日期birthday为一个对象成员,即日期类Date的内嵌对象。 b)日期类Date包括三个数据成员:年份year(int类型)、月份month(int

类型)、日子day(int类型);

c)日期类Date中具有一个含年、月、日三个参数的构造函数,月份和日期

两个参数具有默认参数值3月5日;

d)定义成员方法int getYear()、int getMonth()和int getDay(),分别用于返回

年月日信息;

(2)人员类Person具有两个重载的构造函数,其一只提供姓名、身份证号码、

性别和出生年份等四个参数,且性别参数具有默认值’M’、出生年份参数具有默认值1992;其二提供了姓名、身份证号码、性别、出生年/月/日等六个参数,且性别参数具有默认值’M’、 年月日参数具有默认值1986年4月7日。注意,在对象的构造函数定义中,必须使用初始化参数列表来实现对象成员的构造;

(3)为人员类Person提供自定义的析构函数,以回收动态分配给人员姓名的存

储空间;

(4)为人员类Person提供自定义的拷贝构造函数,实现人员对象的拷贝; (5)为人员类Person添加成员函数void display(),用于输出人员的具体信息;

具有上述功能的人员类Person的测试代码及相应输出结果如下: void main(){

Person wang(\ wang.display(); //L1

Person zhao(\王依\ zhao.display(); //L2

}

?

Person li = wang; li.display();

程序输出:

//或者 Person li(wang);

//L3

L1:姓名: Jasone, 身份证号: 350423X, 性别: M, 出生日期:1992年3月5日

L2:姓名: 王依, 身份证号: 362329X, 性别: F, 出生日期:1987年4月5日 L3:姓名: Jasone, 身份证号: 350423X, 性别: M, 出生日期:1992年3月5日

参考答案:

#include using namespace std;

class Date{ private: };

int getDay(){ }

return day; int getMonth(){ }

return month; int getYear(){ }

return year;

Date(Date &ad){//显式定义Date类的拷贝构造函数 }

this->year = ad.year; this->day = ad.day;

//等价于 year = ad.year

//等价于 month = ad.month //等价于 day = ad.day

this->month = ad.month; int year; int month; int day;

Date(int y, int m=3, int d=5){ //带默认参数的构造函数 }

this->year = y; this->month = m; this->day = d;

//等价于 year = y; //等价于 month = m; //等价于 day = d;

public:


C++OOP复习题-本部(to学生)(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2018年保定市房地产开发企业名录712家

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: