程序设计与算法三六周测试finish

看上去像多态要点:

派生类中可以调用基类的public对象,不能调用基类的private对象

 

2:Fun和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(//此处补充代码
) { 
	p.Fun(); p.Do(); 
} 
int main() { 
	C c; 
	Call( c); 
	return 0;
}

输入

输出

A::Fun 
C::Do

样例输入

None

样例输出

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(B &p//注意这里的引用,参考笔记————多态的表现形式二
	// 在此处补充你的代码
) {
	p.Fun(); p.Do();
}
int main() {
	C c;
	Call(c);
	getchar();
	return 0;
}

多态的表现形式二

  • 派生类的对象可以赋给基类引用
  • 通过基类引用调用基类和派生类中的同名虚函数时:
  1. 若该引用引用的是一个基类的对象,那么被调用是基类的虚函数;
  2. 若该引用引用的是一个派生类的对象,那么被调用的是派生类的虚函数。这种机制也叫做“多态”。
class CBase {
public:
    virtual void SomeVirtualFunction() { }
};
class CDerived:public CBase {
public :
    virtual void SomeVirtualFunction() { }
};
int main() {
    CDerived ODerived;
    CBase & r = ODerived;
    r.SomeVirtualFunction(); //调用哪个虚函数取决于r引用哪种类型的对象,调用CDerived的
    return 0;
} 

 

3:这是什么鬼delete

要点:虚析构函数

 

4:怎么又是Fun和Do

要点:

1,派生类的指针可以赋给基类指针。

2,

多态的表现形式一

  • 派生类的指针可以赋给基类指针。
  • 基通过类指针调用基类派生状语从句:类中的同名虚函数时:
  1. 该若指针指向一个基类的对象,被那么调用的是基类的虚函数 ;
  2. 若该指针指向一个派生类的对象,那么被调用的是派生类的虚函数。这种机制就叫做“多态”。
class CBase {
public:
virtual void SomeVirtualFunction() { }
};
class CDerived:public CBase {
public :
virtual void SomeVirtualFunction() { }
};
int main() {
CDerived ODerived;
CBase * p = & ODerived;
p -> SomeVirtualFunction(); //调用哪个虚函数取决于p指向哪种类型的对象,CDerived的 SomeVirtualFunction()
return 0;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值