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;
:: 叫作用域限定符 或 域限定符,它用于限定紧跟在它后面的对象的从属范围,从属范围可以是一个类或是命名空间,从属范围(某个对象或类名)紧在 :: 之前

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这个参数的返回值 ::表示类成员!

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)。
添加回答
举报