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

Con*_*cer 2 c++

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

sf::RenderWindow window(sf::VideoMode(800, 600), "My Game");
Run Code Online (Sandbox Code Playgroud)

对我来说,这看起来像RenderWindow可能是sf类的静态方法而窗口是实例名称?我无法搞清楚这一点或为谷歌提出良好的搜索条件.任何人都可以为我打破这一行吗?

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

tao*_*ocp 9

  sf::RenderWindow window(sf::VideoMode(800, 600), "My Game");
Run Code Online (Sandbox Code Playgroud)

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

第一个参数:

 sf::VideoMode(800, 600)
Run Code Online (Sandbox Code Playgroud)

是一个对象sf::VideoMode,由每个sf::VideoMode参考的sf类的相应构造函数/静态函数初始化;

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

第二个参数:

 "My Game"
Run Code Online (Sandbox Code Playgroud)

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

  • @ Justin984,您可以使用`new`将对象放入堆中,或者使用此语法将对象放在堆栈中.这是本质区别.这不是那么不寻常. (5认同)
  • @ Justin984是的,这是在C++中构造对象的常用方法.这只是标准的方法.你可以搜索调用构造函数来创建对象吗? (2认同)
  • 根据我的经验,这是正常的方式,除非你正在制作一个指针:`Type*myType = new Type(...)`.我不知道这个语法的任何名称,但另一个只是新语法; aka - "使用new创建类实例" (2认同)
  • 实际上 - 超级重要,这个差异 - "new"分配堆内存,而不是堆栈外.当作用域关闭**时,不会删除堆**上的对象,这将导致内存泄漏.规则:**不输入"新"而不输入"删除"** (2认同)