(1)

#include<iostream>
using namespace std;
class G
{
public:static int m;G( ){ //构造函数m++;cout<<"G begins\n";}~G( ) {cout<<"G ends\n";m--;}
};
int G::m=0;
class D:public G
{
public:D( ){ //构造函数m++;cout<<"D begins\n";}~D( ){cout<<"D ends\n" ;m-- ;}
};
int main( )
{D objg;cout<<G::m<<endl;return 0;
}

(2)

#include<iostream>
using namespace std;
class  A
{
private:int  x;
protected:int y;
public:int z;A(int a,int b,int c){x=a;    y=b;z=c;}int  Getx() {return x; }int  Gety() {return y; }void ShowA() {cout<< "x="<<x<<'\t';cout<<"y="<<y<<'\t';cout<<"z="<<z<<'\n';}
};
class B:public A   //修改点(见后面阅读要求)
{
private:int m,n;
public:B(int a,int b,int c,int d,int e):A(a,b,c){m=d;n=e;}void Show(){cout<<"m="<<m<<'\t'<<"n="<<n<<'\n';cout<<"x="<<Getx()<<'\t';cout<<"y="<<y<<'\t'<<"z="<<z<<'\n';}int Sum(){return (Getx()+y+z+m+n);}
};
int main(){B b1(1,2,3,4,5);  b1.ShowA();b1.Show();cout<< "Sum="<<b1.Sum()<<'\n';cout<<"x="<<b1.Getx()<<'\t';cout << "y=" <<b1.Gety()<<'\t';cout << "z="<<b1.z<<'\n';return 0;
}  

先阅读程序,写出你预想的运行结果,再记录运行结果,如果两者有差异,再读程序给出解释。
观察基类A中成员的访问权限制以及派生类B中对这些成员的访问方法。
请将class B:public A 中的public改为protected或者删除,对程序进行编译,解释出现的情况。

(3)

#include <iostream>
using namespace std;
class Part  //部件类
{
public:Part();Part(int i);~Part();
private:int val;
};
Part::Part(){val=0;cout<<"调用Part的默认构造函数:"<<val<<endl;
}
Part::Part(int i){val=i;cout<<"调用Part的构造函数: "<<val<<endl;
}
Part::~Part(){cout<<"调用Part的析构函数: "<<val<<endl;
}
class Whole: public Part{
public:Whole();Whole(int,int,int,int);~Whole();
private:Part one;Part two;int data;
};
Whole::Whole(){data=0;cout<<"调用whole的默认构造函数: "<<data<<endl;
}
Whole::Whole(int p, int i,int j,int k): Part(p),one(j),two(i),data(k)  //问题2
{cout<<"调用whole的构造函数: "<<data<<endl;
}
Whole::~Whole(){cout<<"调用whole的析构函数: "<<data<<endl;
}
void f(){Whole w1;Whole w2(1,2,3,4);
}
int main(){f();return 0;
}  

 先分析程序的执行结果,在上机时运行程序进行对照,再通过单步执行跟踪程序的运行,达到理解基类、派生类中构造函数、析构函数执行过程的目的。
 将Whole类的构造函数(见注释//问题2)改为下面形式,请解释出现的警告信息。

Whole::Whole(int p, int i,int j,int k):  Part(p),two(i),one(j),data(k)  //问题2

(4)阅读程序,写出执行结果,并回答问题

#include<iostream>
using namespace std;
class A
{
public:  int n;
};
class B:public A {};   // class B:virtual public A{};
class C:public A {};   // class C:virtual public A{};
class D:public B,public C
{
public:int getn() {return B::n;}
};
int main()
{  D d;  d.B::n=10;  d.C::n=20;cout<<d.getn()<<endl; return 0;
}  

程序执行后,运行结果是多少?
将程序中有注释的两条语句修改为注释的内容,程序的运行结果又是多少?

2015级C++第10、11周程序阅读(补充) 继承和派生相关推荐

  1. 2015级C++第10、11周程序阅读 继承和派生

    阅读程序,请写出这些程序的运行结果 (1)阅读程序,写出执行结果 #include <iostream> using namespace std; class Data { public: ...

  2. [习题]如何触发 GridView 身体里面的「子控件」的事件 (ASP.NET案例精编 / 清华大学出版社 Ch.10/11两章的补充)...

    [习题]如何触发 GridView 身体里面的「子控件」的事件?#1 (ASP.NET案例精编 / 清华大学出版社 Ch.10/11两章的补充) 這個範例是要補充書本「上集」(ASP.NET專題實務) ...

  3. 2015级C++第15周程序阅读 范型程序设计

    阅读下面的程序,对照运行结果,领会STL的用法 (1) #include <string> #include <set> #include <iterator> # ...

  4. 2015级C++第14周程序阅读 STL中的简单容器和迭代器

    阅读并运行程序,解释程序执行得到的结果 (1) #include<iostream> #include<vector> #include<iterator> usi ...

  5. C++第10/11周项目 继承与派生 【项目1 - 点-圆-圆柱类族的设计】(复习新版)

    /*  *copyright(c) 2016,烟台大学计算机学院  *All rights reserved  *文件名称:test.cpp  *作者:谭泽纯  *版本:v6.0  *  *问题描述: ...

  6. 第十六周程序阅读(2)

    /* *Copyright(c)2016,烟台大学计算机与控制工程学院 *All rights reserved *文件名称:123.cpp *作 者:王蕊 *完成日期:2016年6月11日 *版 本 ...

  7. 第十六周程序阅读(1)

    /* *Copyright(c)2016,烟台大学计算机与控制工程学院 *All rights reserved *文件名称:123.cpp *作 者:王蕊 *完成日期:2016年6月11日 *版 本 ...

  8. 第十五周程序阅读-范型程序设计(5)

    /* *Copyright(c)2016,烟台大学计算机与控制工程学院 *All rights reserved *文件名称:123.cpp *作 者:王蕊 *完成日期:2016年6月6日 *版 本 ...

  9. 第十六周程序阅读(8)

    /* *Copyright(c)2016,烟台大学计算机与控制工程学院 *All right reserved. *文件名称:123.cpp *作 者:王蕊 *完成日期:2016年6月23日 *版 本 ...

最新文章

  1. 、PHP只能访问mysql_php中 mysql函数不能调用,只有mysql_query()可以用
  2. iOS开发核心动画之画图板
  3. RabbitMQ入门(三)-Publish/Subscribe(发布/订阅)
  4. CTex + Texmaker
  5. 你不知道的CSS3圆角
  6. 推荐一款好用的消息推送服务WxPusher
  7. HTTP与HTTPS简介
  8. ssas连接mysql_BI-SSAS简介篇
  9. 腾讯手机管家(android2.3),腾讯手机管家3.4 Android发布_软件资讯软件快报-中关村在线...
  10. OpenStack在天河二号的大规模部署实践(转)
  11. 陈果“有空来坐坐...”
  12. Qt例子学习笔记 - Examples/Qt-6.2.0/charts/callout
  13. 外卖小程序源码+后台_外卖cps外卖优惠券 赚钱小程序源码
  14. 80端口跟8080端口有什么具体区别?
  15. 怪异的JavaScript系列(三)
  16. 【matlab】matlab中的大小写转换
  17. 2022年全球市场液相色谱仪器总体规模、主要生产商、主要地区、产品和应用细分研究报告
  18. 推荐一款Python编辑器
  19. 列表含有子列表展开成一个列表
  20. 青岛新媒体运营教程:纯干货建议收藏,给自媒体运营人10突破

热门文章

  1. win7 64安装oracle10g 客户端,关于win7 64位 只 安装 oracle 10g的client
  2. Python学习的十个阶段,学完大成,对应一下看看你自己在哪个阶段
  3. linux文件系统逻辑,Linux系统——文件系统与LVM 逻辑
  4. vscode 无法跳转到函数定义_玩转VS Code
  5. 期望dp ---- B. Tree Array 思维+期望dp 逆序对期望数
  6. 安卓手机兼容_重磅:鸿蒙OS2.0手机开发者Beta版发布,能兼容安卓
  7. 打印机在计算机里被删掉,不小心把设置里打印机删掉了怎么办
  8. 编译是检查C语言什么的错误,c语言编译过程
  9. 《线性代数》概念定理大全!
  10. 洛谷8月赛Div.2