C++面向对象程序设计第三章习题答案解析
整理一下自己写的作业,供考试前复习用,哈哈
进入正题!!!
题目:
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 ; }
运行结果:

C++面向对象程序设计第三章习题答案解析的更多相关文章
- Reinforcement Learning by Sutton 第三章习题答案
好不容易写完了 想看全部的欢迎点击下面的github https://github.com/LyWangPX/Solutions-of-Reinforcement-Learning-An-Introd ...
- Java面向对象程序设计第9章1-9
Java面向对象程序设计第9章1-9 1. 线程和进程的联系和区别是什么? 联系: 一个进程可以包括多个线程. 区别: 进程: 进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动,它是系统 ...
- 统计学习导论:基于R应用——第三章习题
第三章习题 部分证明题未给出答案 1. 表3.4中,零假设是指三种形式的广告对TV的销量没什么影响.而电视广告和收音机广告的P值小说明,原假设是错的,也就是电视广告和收音机广告均对TV的销量有影响:报 ...
- Java面向对象程序设计第14章3-8和第15章6
Java面向对象程序设计第14章3-8和第15章6 3.完成下面方法中的代码,要求建立一个缓冲区,将字节输入流中的内容转为字符串. import java.io.*; public class tes ...
- Java面向对象程序设计第8章3-5
Java面向对象程序设计第8章3-5 3.String类型有什么特点? 一旦赋值,便不能更改其指向的字符对象 如果更改,则会指向一个新的字符对象 不能为null 4.String什么时候进行值比较,什 ...
- Java面向对象程序设计第7章1-8
Java面向对象程序设计第7章1-8 1."程序中凡是可能出现异常的地方必须进行捕获或拋出",这句话对吗? 不对. 异常分两类,runtime异常和非runtime异常. runt ...
- PythonCrashCourse 第三章习题
PythonCrashCourse 第三章习题 3.1 将一些朋友的姓名存储在一个列表中,并将其命名为names.依次访问该列表中的每个元素,从而将每个朋友的姓名都打印出来 names = ['lih ...
- C++面向程序设计(第二版)课后习题答案解析
最近没什么心情整理零散的知识点,就整理一下第四章的课后习题答案. 1.定义一个复数类Complex,重载运算符“+”,使之能用于复数的加法运算.将运算符函数重载为非成员函数,非友元的普通函数.编程序, ...
- 周志华-机器学习西瓜书-第三章习题3.5 LDA
本文为周志华机器学习西瓜书第三章课后习题3.5答案,编程实现线性判别分析LDA,数据集为书本第89页的数据 首先介绍LDA算法流程: LDA的一个手工计算数学实例: 课后习题的代码: # coding ...
随机推荐
- FZU2018级算法第一次作业 1.1fibonacci (矩阵快速幂)
题目 Winder最近在学习fibonacci 数列的相关知识.我们都知道fibonacci数列的递推公式是F(n)=F(n-1)+F(n-2)(n>=2 且n 为整数). Winder想知道的 ...
- Django框架深入了解_02(DRF之序列化、反序列化)
序列化:将Python对象准换成json格式的字符串,反之即为反序列化 DRF的序列化使用过程: 使用drf的序列化组件 -1 新建一个序列化类继承Serializer -2 在类中写要序列化的字段 ...
- 高仿linux下的ls -l命令——C语言实现
主要用到的函数可以参考头文件,仅仅支持ls -l这功能,扩展就交给大家了0.0 相关测试图片: 话不多说,直接上码 #include <stdio.h> #include < ...
- Java8时间转换
===java8中时间的各种转换(LocalDateTime)=== 1.将LocalDateTime转为自定义的时间格式的字符串 public static String getDateTimeAs ...
- [LOJ6433] [PKUSC2018] 最大前缀和
题目链接 LOJ:https://loj.ac/problem/6433 Solution 注意到最大前缀要满足什么性质,假设序列\(a[1..n]\)的最大前缀是\(s_x\),那么显然要满足所有\ ...
- java.lang.SecurityManager、java.security包
学习java大概3年多了,一直没有好好研究过java安全相关的问题,总是会看到 SecurityManger sm = System.getSecurityManager(); if(sm!=null ...
- Java8系列 (三) Spliterator可分迭代器
本文转载自 jdk8 Stream 解析2 - Spliterator分割迭代器. 概述 我们最为常见的流的产生方式是 collection.stream(), 你点开Stream()方法, 他是通过 ...
- MES系统之设备管理的基础功能
设备是制造企业进行生产的主要物质技术基础,制造企业的生产率.产品质量.生产成本都与设备直接相关.因此,正确使用.定时保养.及时检修维护设备,并对设备的运行性能进行分析,使设备处于良好的状态,才能保证企 ...
- Mycat分布式数据库架构解决方案--schema.xml详解
echo编辑整理,欢迎转载,转载请声明文章来源.欢迎添加echo微信(微信号:t2421499075)交流学习. 百战不败,依不自称常胜,百败不颓,依能奋力前行.--这才是真正的堪称强大!!! 该文件 ...
- js数据类型及判断数据类型
众所周知,js有7种数据类型 1. null 2. undefined 3. boolean 4. number 5. string 6. 引用类型(object.array.function) 7. ...
