当前位置: 首页 > news >正文

c++ code:(12)polymorphism

多态执行顺序是有讲究滴。。。。。。。

/*9593

程序填空产生指定输出 
 
样例输入:
无
样例输出

D::Fun
B::Fun
D::Fun
nBVal=2
nBVal=24
nDVal=8
B::Fun
nBVal=12
 
*/

#include <iostream>
using namespace std;
class B { 
	private: 
		int nBVal; 
	public: 
		void Print() 
		{ cout << "nBVal="<< nBVal << endl; } 
		void Fun() 
		{cout << "B::Fun" << endl; } 
		B ( int n ) { nBVal = n;} 
}; 
//your code starts here
class D :public B { 
	private : 
		int nDVal; 
	public: 
		void Print() { 
			B::Print(); 
			cout << "nDVal="<<nDVal<<endl; 
		} 
		D( int n) : B(3*n) 
		{ nDVal = n; } 
		void Fun() 
		{ cout << "D::Fun" << endl; } 
}; 
//your codes ends here
int main() { 
	B * pb; D * pd; 
	D d(4); d.Fun(); 
	pb = new B(2); pd = new D(8); 
	pb -> Fun(); pd->Fun(); 
	pb->Print (); pd->Print (); 
	pb = & d; pb->Fun(); 
	pb->Print(); 
	return 0;
} 

/*9594
程序填空输出指定结果
	
输出:
A::Fun 
C::Do 

*/
#include <iostream> 
using namespace std;
class A { 
	private: 
	int nVal; 
	public: 
	void Fun() 
	{ cout << "A::Fun" << endl; }; 
	void Do() 
	{ cout << "A::Do" << endl; } 
}; 
class B:public A { 
	public: 
	virtual void Do() 
	{ cout << "B::Do" << endl;} 
}; 
class C:public B { 
	public: 
	void Do( ) 
	{ cout <<"C::Do"<<endl; } 
	void Fun() 
	{ cout << "C::Fun" << endl; } 
}; 
void Call( 
//your code starts here
B & p
//your code ends here  
) { 
	p.Fun(); p.Do(); 
} 
int main() { 
	C c; 
	Call( c); 
	return 0;
} 

/*
程序填空输出指定结果

destructor B
destructor A

*/

 
#include <iostream> 
using namespace std;
class A 
{ 
public:
	A() { }
//your code starts here	
	virtual ~A() { cout << "destructor A" << endl; } 
//your code ends here	
}; 
class B:public A { 
	public: 
	~B() { cout << "destructor B" << endl; } 
}; 
int main() 
{ 
	A * pa; 
	pa = new B; 
	delete pa; 
	return 0;
} 

 

/*

程序填空,输出:
 
A::Fun
A::Do
A::Fun
C::Do

*/
#include <iostream>
using namespace std;
class A {
	private:
	int nVal;
	public:
	void Fun()
	{ cout << "A::Fun" << endl; };
	virtual void Do()
	{ cout << "A::Do" << endl; }
};
class B:public A {
	public:
	virtual void Do()
	{ cout << "B::Do" << endl;}
};
class C:public B {
	public:
	void Do( )
	{ cout <<"C::Do"<<endl; }
	void Fun()
	{ cout << "C::Fun" << endl; }
};
void Call(
//your code starts here
A* p
//your code ends here
) {
	p->Fun(); p->Do();
}
int main() {
	Call( new A());
	Call( new C());
	return 0;
} 

 

相关文章:

  • c++ code:(13)io and template
  • 英文论文写作素材
  • 王梓坤院士的学术思想
  • 使用EI、SCI搜索 (使用 websci中的endnote online引用 )
  • 玩转word 和 mathtype 的结合
  • paper 格式
  • 计算思维
  • 程序中的一些思想
  • 深入 理解char * ,char ** ,char a[ ] ,char *a[] 的区别
  • STL MAP四种插入方法
  • c++ STL函数大全(一):vector
  • c++ STL函数大全(二):map
  • c++ STL函数大全(三):queue
  • c++ STL函数大全(四):string
  • c++ STL函数大全(五):set
  • canvas绘制圆角头像
  • C学习-枚举(九)
  • ES10 特性的完整指南
  • gitlab-ci配置详解(一)
  • JavaWeb(学习笔记二)
  • mysql_config not found
  • Netty 4.1 源代码学习:线程模型
  • PHP 小技巧
  • spring boot 整合mybatis 无法输出sql的问题
  • Traffic-Sign Detection and Classification in the Wild 论文笔记
  • TypeScript实现数据结构(一)栈,队列,链表
  • 等保2.0 | 几维安全发布等保检测、等保加固专版 加速企业等保合规
  • 记录:CentOS7.2配置LNMP环境记录
  • 前端面试总结(at, md)
  • 嵌入式文件系统
  • 微服务核心架构梳理
  • 微服务入门【系列视频课程】
  • 译米田引理
  • 中文输入法与React文本输入框的问题与解决方案
  • 关于Android全面屏虚拟导航栏的适配总结
  • 基于django的视频点播网站开发-step3-注册登录功能 ...
  • ​ArcGIS Pro 如何批量删除字段
  • ​HTTP与HTTPS:网络通信的安全卫士
  • ​Z时代时尚SUV新宠:起亚赛图斯值不值得年轻人买?
  • #if 1...#endif
  • ( )的作用是将计算机中的信息传送给用户,计算机应用基础 吉大15春学期《计算机应用基础》在线作业二及答案...
  • (保姆级教程)Mysql中索引、触发器、存储过程、存储函数的概念、作用,以及如何使用索引、存储过程,代码操作演示
  • (附源码)计算机毕业设计ssm基于B_S的汽车售后服务管理系统
  • (免费领源码)Python#MySQL图书馆管理系统071718-计算机毕业设计项目选题推荐
  • (十五)使用Nexus创建Maven私服
  • **Java有哪些悲观锁的实现_乐观锁、悲观锁、Redis分布式锁和Zookeeper分布式锁的实现以及流程原理...
  • .htaccess配置重写url引擎
  • .NET 2.0中新增的一些TryGet,TryParse等方法
  • .NET CF命令行调试器MDbg入门(三) 进程控制
  • .NET/C# 解压 Zip 文件时出现异常:System.IO.InvalidDataException: 找不到中央目录结尾记录。
  • .sh
  • [ MSF使用实例 ] 利用永恒之蓝(MS17-010)漏洞导致windows靶机蓝屏并获取靶机权限
  • [20170705]diff比较执行结果的内容.txt
  • [20170713] 无法访问SQL Server
  • [Android] 240204批量生成联系人,短信,通话记录的APK