猿问

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

class TerrainFrameListener : public ExampleFrameListener
{
public:
TerrainFrameListener(RenderWindow* win, Camera* cam)
: ExampleFrameListener(win, cam)
{
// Reduce move speed
mMoveSpeed = 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;

请达人讲解一下,不胜感激!

慕盖茨4494581
浏览 144回答 3
3回答

慕沐林林

1.class TerrainFrameListener : public ExampleFrameListener {}class 派生类名 : [继承方式] 基类名 {}这是类的派生,本题表示类TerrainFrameListener 公有继承 类ExampleFrameListener2.public:TerrainFrameListener(RenderWindow* win, Camera* cam): ExampleFrameListener(win, cam)在派生执行类的构造函数时,如果有需要,可以显式调用基类的构造函数用初始化数据成员,这种 : 的方式来源于 参数初始化表对数据成员初始化。本题的思路很明显,在调用类TerrainFrameListener的构造函数时,往下调用它的基类ExampleFrameListener的构造函数,同时将两个参数传给它。3.if( ExampleFrameListener::frameRenderingQueued(evt) == false )return false;:: 叫作用域限定符 或 域限定符,它用于限定紧跟在它后面的对象的从属范围,从属范围可以是一个类或是命名空间,从属范围(某个对象或类名)紧在 :: 之前

一只斗牛犬

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

富国沪深

1.类TerrainFrameListener是从类ExampleFrameListener 中以public 方式继承。ExampleFrameListener是父类(又名基类),TerrainFrameListener则称子类。2.TerrainFrameListener(RenderWindow* win, Camera* cam): ExampleFrameListener(win, cam){// Reduce move speedmMoveSpeed = 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)。
随时随地看视频慕课网APP
我要回答