c++新手,你能解释一下这个构造函数语法吗?
New to c++, can you explain this constructor syntax?
这可能是非常基本的,但语法看起来有点陌生的我来自。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::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
。
我可以看到两件事。
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"
。
- "error: no matching function for call to"构造函数错误
- C++17复制构造函数,在std::unordereded_map上进行深度复制
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗
- 为什么在没有显式默认构造函数的情况下,将另一个结构封装在联合中作为成员的结构不能编译
- 为什么在C++中使用私有复制构造函数与删除复制构造函数
- 选择要调用的构造函数
- 如何委托派生类使用其父构造函数?
- 构造函数正在调用一个使用当前类类型的函数
- 没有用于初始化C++中的变量模板的匹配构造函数
- 初始化具有非默认构造函数的std::数组项的更好方法
- 当从函数参数中的临时值调用复制构造函数时
- 在c++构造函数中使用随机字符串生成器
- 一对向量构造函数:初始值设定项列表与显式构造
- 从构造函数抛出异常时如何克服内存泄漏
- 我不明白为什么我声明一个空的内部结构并将其传递给构造函数
- 继承:构造函数,初始化C++11中基类的类C数组成员
- 请描述一下在 c++ 中在此类中定义构造函数的方式?
- 有人可以解释一下这里发生了什么(类和构造函数/析构函数)吗?
- c++新手,你能解释一下这个构造函数语法吗?
- 你能用英语尽可能简单地解释一下什么是复制构造函数,什么时候需要使用它吗?