2

这可能是非常基本的,但是对于来自 .Net 背景的我来说,语法看起来有点陌生。我正在尝试学习 C++ 来做一些爱好游戏开发,我在教程中遇到了这一行:

sf::RenderWindow window(sf::VideoMode(800, 600), "My Game");

对我来说,这看起来像 RenderWindow 可能是 sf 类的静态方法,而 window 是实例名称?我无法弄清楚这一点或想出适合谷歌的搜索词。谁能帮我打破这条线?

另外,请随意重命名标题,我不知道如何描述这一行,所以我无法想出一个描述性的标题。

4

6 回答 6

9
  sf::RenderWindow window(sf::VideoMode(800, 600), "My Game");

它创建了一个对象sf::RenderWindow,对象的名称是window。它将window通过将以下参数传递给sf::RenderWindow的构造函数来进行初始化:

第一个参数:

 sf::VideoMode(800, 600)

是 的对象sf::VideoMode,由 sf 类的相应构造函数/静态函数根据引用进行初始化sf::VideoMode

VideoMode 定义了一个视频模式(宽度、高度、bpp、频率)并提供静态函数来获取显示设备支持的模式

第二个参数:

 "My Game"

是一个字符串,可能意味着窗口的标题(我猜),你可能需要找出类VideoMode是如何定义的。

于 2013-06-12T01:24:41.457 回答
3

该行声明并初始化了一个名为windowtype的变量sf::RenderWindow

C++ 中的类型具有构造函数,并且可以在创建变量时调用构造函数,例如,这会创建一个被调用的整数x并将其初始化为值3

int x(3);

sf::RenderWindow被调用类的构造函数接受类型为sf::VideoModeand的变量string。传递的第一个参数sf::VideoMode(800, 600), 是创建该类型的新实例sf::VideoMode并将其传递给函数的简写。它相当于:

sf::VideoMode mode(800, 600);
sf::RenderWindow window(mode, "My Game");

请注意以下内容之间的x区别y

Type x(3);
Type* y = new Type(3);

x分配在堆栈上,而y分配在堆上。由于x在堆栈上,因此当变量超出范围时,它将被取消分配(并且类型 Type 的析构函数将被调用)。y会一直待到你打电话delete

于 2013-06-12T01:27:26.250 回答
0

sf 可以是命名空间或类

RenderWindow 是函数 window() 返回的类型

VideoMode 是 VideoMode 类的构造函数(或者有一点机会成为 sf 中的函数)

于 2013-06-12T01:23:56.047 回答
0

大概 ...

sf::RenderWindow是一种类型,它RenderWindow来自sf命名空间。

windowsf::RenderWindow是您在此处声明的类型变量的名称,在两者之间()有用于构建window对象的构造函数的参数,最后一个是常量,第一个是返回的值sf::VideoMode(800, 600)

于 2013-06-12T01:26:50.880 回答
0

我能看到的两件事。

要么sf是类并且RenderWindow是静态类并且VideoMode是类中的成员函数,要么sf是命名空间并且它们是命名空间中的类和/或方法。如果是我的钱,我可能会选择命名空间的概念。

于 2013-06-12T01:24:10.830 回答
-2

您所指示的是对名为window.

来电:

sf::RenderWindow window(sf::VideoMode(800, 600), "My Game");

返回类型为 of sf::RenderWindow,该函数接受两个参数sf::VideoMode(800, 600)和一个文字字符串"My Game"

于 2013-06-12T01:26:07.257 回答