c++新手,你能解释一下这个构造函数语法吗?

New to c++, can you explain this constructor syntax?

本文关键字:一下 构造函数 语法 新手 能解释 c++      更新时间:2023-10-16

这可能是非常基本的,但语法看起来有点陌生的我来自。net背景。我正在尝试学习c++来做一些业余游戏开发,我在教程中遇到了这一行:

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

对我来说,这看起来像RenderWindow可能是一个静态方法的sf类和窗口的实例名称?我很难弄清楚这个问题,也很难在谷歌上找到好的搜索词。谁能给我解释一下这句话吗?

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

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

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

第一个参数:
 sf::VideoMode(800, 600)

sf::VideoMode的对象,由相应的构造函数/静态函数初始化每个sf::VideoMode引用;

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

第二个参数:

 "My Game"

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

这一行声明并初始化了sf::RenderWindow类型的变量window

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

int x(3);

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

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

注意xy的区别如下:

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

表示x是在堆栈上分配的,而y是在堆上分配的。由于x在堆栈上,当变量超出作用域时,它将被取消分配(并且将调用类型type的析构函数)。y会一直待到你调用delete

我可以看到两件事。

sf是类,RenderWindow是静态类,VideoMode是类中的成员函数,或者sf是命名空间,这些是命名空间中的类和/或方法。如果是我的钱,我可能会选择名称空间的概念。

probably…

sf::RenderWindow是一个类型,它是来自sf命名空间的RenderWindow

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

sf可以是名称空间或类

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

VideoMode是VideoMode类的构造函数(或者有可能是sf中的函数)

您所指示的是对名为window的静态函数的调用。

调用:

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

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