C++面向对象程序设计第三章习题答案解析
2024-08-22 09:37:05
整理一下自己写的作业,供考试前复习用,哈哈
进入正题!!!
题目:
2.分析下面的程序,写出其运行时的输出结果
这里就不展示课本源代码,直接给出修改后的代码,错误部分代码已给出具体的注释
#include<iostream>
//原题的#include<iostream.h>写法错误
#include<stdlib.h>
//用于解决闪屏的头文件
using namespace std;
//原题缺少该行代码,用于输入cin和输出cout
class Date{
public:
Date(int,int,int);
Date(int,int);
Date(int);
Date(); void display();
private:
int month;
int day;
int year; }; Date::Date(int m,int d,int y):month(m),day(d),year(y){} Date::Date(int m,int d):month(m),day(d)
{year=;} Date::Date(int m):month(m)
{day=;year=;} Date::Date()
{month=;day=;year=;} void Date::display()
{
cout<<month<<"/"<<day<<"/"<<year<<endl;
} int main()
{
Date d1(,,);
Date d2(,);
Date d3();
Date d4;
d1.display();
d2.display();
d3.display();
d4.display();
system("pause");
//解决闪屏的代码
return ;
}
运行结果:
3.如果将第2题中程序的第四行改为用默认参数,即
Date(int =1,int =1,int =2005);
分析程序有无问题。上机编译,分析出错信息,修改程序使之能通过编译。要求保留上面一行给出的构造函数,同时能输出与第2 题程序相同的输出结果。
解析:在第2题的代码上进行修改。
错误点:
修改错误,编译成功的代码:
#include<iostream>
//原题的#include<iostream.h>写法错误
#include<stdlib.h>
//用于解决闪屏的头文件
using namespace std;
//原题缺少该行代码,用于输入cin和输出cout
class Date{
public:
Date(int x=,int y=,int z=);
Date(int,int);
Date(int);
Date(); void display();
private:
int month;
int day;
int year; }; Date::Date(int m,int d,int y):month(m),day(d),year(y){} Date::Date(int m,int d):month(m),day(d)
{year=;} Date::Date(int m):month(m)
{day=;year=;} Date::Date()
{month=;day=;year=;} void Date::display()
{
cout<<month<<"/"<<day<<"/"<<year<<endl;
} int main()
{
Date d1(,,);
Date d2(,,);
Date d3(,,);
Date d4(,,);
d1.display();
d2.display();
d3.display();
d4.display();
system("pause");
//解决闪屏的代码
return ;
}
运行结果:
使用该错误修改方法,实际上就只有一个构造函数起作用,注释其它三个构造函数,输出结果不变,调用原理是多次调用同一个函数,而不是分别调用各自的构造函数。
源代码:
#include<iostream>
//原题的#include<iostream.h>写法错误
#include<stdlib.h>
//用于解决闪屏的头文件
using namespace std;
//原题缺少该行代码,用于输入cin和输出cout
class Date{
public:
Date(int x=,int y=,int z=);
void display();
private:
int month;
int day;
int year; }; Date::Date(int m,int d,int y):month(m),day(d),year(y){} void Date::display()
{
cout<<month<<"/"<<day<<"/"<<year<<endl;
} int main()
{
Date d1(,,);
Date d2(,,);
Date d3(,,);
Date d4(,,);
d1.display();
d2.display();
d3.display();
d4.display();
system("pause");
//解决闪屏的代码
return ;
}
4.建立一个对象数组,内放5个学生的数据(学号,成绩),用指针指向数组首元素,输出1,3,5个学生的数据。
源代码及解析:
#include<iostream>
#include<stdlib.h>
using namespace std;
class Student
{
public:
//学生数据的构造函数
Student(int sno,int grade):Sno(sno),Grade(grade){}
void display();
int Sno;
int Grade;
}; void Student::display()
{
cout<<Sno<<' '<<Grade<<endl;
} int main()
{
//五个学生的数据信息
Student stu[]={
Student(,),
Student(,),
Student(,),
Student(,),
Student(,),
};
//定义指针
void(Student::*p1)();
p1=&Student::display;
//调用函数
(stu[].*p1)();
(stu[].*p1)();
(stu[].*p1)();
system("pause");
return ; }
运行结果:
最新文章
- MongoDB常用操作--集合3
- Xcode如何查看内存中的数据
- Java条件语句之 switch
- 调用windows api 获取系统分辨率
- Sharepoint 2010 用VS定制Master,并且每个Web应用同一个Master
- [置顶] COcos2d-X 中文API
- python 3---if判断成绩练习
- 带以太网的MicroPython开发板:TPYBoardv201建立云加法器实例
- 在DirectShow的视频图像上叠加线条和文字
- 【Unity技巧】自定义消息框(弹出框)
- stylus导入时 报错These relative modules were not found
- Linux或UNIX系统配置检查
- x264阅读记录-3
- 函数, arguments对象, eval,静态成员和实例成员
- C++的OOP特性
- java 中xml转换为json对象
- 20145216史婧瑶《网络对抗》Web安全基础实践
- 分布式缓存技术memcached学习系列(二)——memcached基础命令
- bzoj 4069~4071 APIO2015
- python的N个小功能之正则匹配