这可能是非常基本的,但是对于我来说,来自.Net背景的语法看起来有些陌生。我正在尝试学习c ++做一些爱好游戏开发,我在教程中遇到了这一行:
sf::RenderWindow window(sf::VideoMode(800, 600), "My Game");
对我来说,这看起来像RenderWindow可能是sf类的静态方法而窗口是实例名称?我无法搞清楚这一点或为谷歌提出良好的搜索条件。任何人都可以为我打破这条线吗?
另外,随意重命名标题,我不知道如何描述这一行,所以我无法想出一个描述性的标题。
答案 0 :(得分:9)
sf::RenderWindow window(sf::VideoMode(800, 600), "My Game");
它创建一个sf::RenderWindow
的对象,对象的名称为window
。它将通过将以下参数传递给window
的构造函数来初始化sf::RenderWindow
:
第一个参数:
sf::VideoMode(800, 600)
是sf::VideoMode
的对象,它由每个sf::VideoMode
参考的sf类的相应构造函数/静态函数初始化;
VideoMode定义视频模式(宽度,高度,bpp,频率)并提供静态功能以获取显示设备支持的模式
第二个参数:
"My Game"
是一个字符串,可能意味着窗口的标题(我猜),你可能需要找出如何定义类VideoMode
。
答案 1 :(得分:3)
该行声明并初始化名为window
sf::RenderWindow
的变量。
C ++中的类型具有构造函数,并且在创建变量时可以调用构造函数,例如这会创建一个名为x
的整数,并将其初始化为值3
:
int x(3);
被调用的sf::RenderWindow
类的构造函数接受sf::VideoMode
和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
。
答案 2 :(得分:0)
sf可以是命名空间或类
RenderWindow是函数window()
返回的类型VideoMode是VideoMode类的构造函数(或者稍微有可能成为sf中的函数)
答案 3 :(得分:0)
我可以看到两件事。
sf
是一个类,RenderWindow
是一个静态类,VideoMode
是类中的成员函数,或sf
是一个名称空间,这些是类和或命名空间内的方法。如果这是我的钱,我可能会使用命名空间概念。
答案 4 :(得分:0)
可能......
sf::RenderWindow
是一种类型,它是RenderWindow
命名空间中的sf
。
window
是您在此处声明的sf::RenderWindow
类型变量的名称,()
之间有用于构建window
的构造函数的参数对象,最后一个是常量,第一个是sf::VideoMode(800, 600)
返回的值。
答案 5 :(得分:-2)
您所指出的是对名为window
的静态函数的调用。
电话:
sf::RenderWindow window(sf::VideoMode(800, 600), "My Game");
返回类型为sf::RenderWindow
,该函数有两个参数sf::VideoMode(800, 600)
和一个文字字符串"My Game"
。