为了账号安全,请及时绑定邮箱和手机立即绑定

我学习c++,看到下面这样一段代码,请问作用是什么?

我学习c++,看到下面这样一段代码,请问作用是什么?

慕盖茨4494581 2022-07-20 15:11:23
class TerrainFrameListener : public ExampleFrameListener{public:TerrainFrameListener(RenderWindow* win, Camera* cam): ExampleFrameListener(win, cam){// Reduce move speedmMoveSpeed = 50;}bool frameRenderingQueued(const FrameEvent& evt){if( ExampleFrameListener::frameRenderingQueued(evt) == false )return false;我学习c++,看到这样一段代码,class TerrainFrameListener : public ExampleFrameListener这一句看起来应该是在定义一个派生类,下面这句是什么作用呢?public:TerrainFrameListener(RenderWindow* win, Camera* cam): ExampleFrameListener(win, cam)我看不明白,还有这一句又在做什么?if( ExampleFrameListener::frameRenderingQueued(evt) == false )return false;请达人讲解一下,不胜感激!
查看完整描述

3 回答

?
慕沐林林

TA贡献2016条经验 获得超9个赞

1.
class TerrainFrameListener : public ExampleFrameListener {}
class 派生类名 : [继承方式] 基类名 {}
这是类的派生,本题表示类TerrainFrameListener 公有继承 类ExampleFrameListener

2.
public:
TerrainFrameListener(RenderWindow* win, Camera* cam)
: ExampleFrameListener(win, cam)
在派生执行类的构造函数时,如果有需要,可以显式调用基类的构造函数用初始化数据成员,这种 : 的方式来源于 参数初始化表对数据成员初始化。
本题的思路很明显,在调用类TerrainFrameListener的构造函数时,往下调用它的基类ExampleFrameListener的构造函数,同时将两个参数传给它。

3.
if( ExampleFrameListener::frameRenderingQueued(evt) == false )
return false;
:: 叫作用域限定符 或 域限定符,它用于限定紧跟在它后面的对象的从属范围,从属范围可以是一个类或是命名空间,从属范围(某个对象或类名)紧在 :: 之前

查看完整回答
反对 回复 2022-07-24
?
一只斗牛犬

TA贡献1784条经验 获得超2个赞

1.
class TerrainFrameListener : public ExampleFrameListener
class 派生类名 :[继承方式] 基类名
2.
public:
TerrainFrameListener(RenderWindow* win, Camera* cam)
: ExampleFrameListener(win, cam)
派生类的构造函数,在函数体中只对派生类新增的数据成员初始化
3.
if( ExampleFrameListener::frameRenderingQueued(evt) == false )
return false;
if()里面的是判断基类成员函数带入evt这个参数的返回值 ::表示类成员!


查看完整回答
反对 回复 2022-07-24
?
富国沪深

TA贡献1790条经验 获得超9个赞

1.类TerrainFrameListener是从类ExampleFrameListener 中以public 方式继承。ExampleFrameListener是父类(又名基类),TerrainFrameListener则称子类。

2.TerrainFrameListener(RenderWindow* win, Camera* cam)
: ExampleFrameListener(win, cam)
{
// Reduce move speed
mMoveSpeed = 50;
}
该函数是子类的构造函数,完成初始化功能。这里需要解释一下加的后缀
: ExampleFrameListener(win, cam) 。首先明确一点,类在构造过程中,先构造父类,再构造子类。因此,“: ExampleFrameListener(win, cam) ”的作用就是给要构造的父类传参数,完成对父类的初始化。简单的说,这就是在继承中给父类初始化时的“语法要求,语法格式”,子类的构造函数中要给父类传参数。

3.bool frameRenderingQueued(const FrameEvent& evt)
{
if( ExampleFrameListener::frameRenderingQueued(evt) == false )
return false;
}
这是一个子类的成员函数,因为代码不全,它的功能是干什么的现在看不出来。要提的一点是,“ExampleFrameListener::frameRenderingQueued(evt)”这里的符号“::”,它的作用是作用域标识符,说明它所引用的函数的来源,这里的作用就是说明,frameRenderingQueued(evt)这个函数是引用ExampleFrameListener这个类里面的,即引用的是ExampleFrameListener的成员函数frameRenderingQueued(evt)。


查看完整回答
反对 回复 2022-07-24
  • 3 回答
  • 0 关注
  • 143 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号