我目前正在学习OpenGL,我对C ++也相当陌生。我的问题是为什么在这里使用指针。
GLFWwindow *mainWindow = glfwCreateWindow(WIDTH, HEIGHT, "Test Window", NULL, NULL);
我知道了什么是指针,而不是为什么在这里使用它们。所有的答案表示赞赏,谢谢。
glfwCreateWindow()
返回一个指向窗口的指针而不是返回实际窗口没有内在的必要性。可以设计OpenGL库,以使该代码看起来有所不同,例如:
GLFWwindow mainWindow = glfwCreateWindow(WIDTH, HEIGHT, "Test Window", nullptr, nullptr);
或者实际上,仅使用a的构造GLFWindow
:
GLFWwindow mainWindow { WIDTH, HEIGHT, "Test Window", nullptr, nullptr };
尽管如此,采用这种方式设计API的原因可能有几个:
T
,则从理论上讲,您可能需要将T
在函数中创建的函数复制到调用该函数的代码的目标位置。在你的情况-返回GLFWwindow
可能需要制作副本的GLFWwindow
; 这对于库可能是有问题的(我不知道OpenGL,所以我也不知道)。T*
,指向的对象可以是“是T”的任何内容-表示从T
(!)继承的任何类型。而如果您返回纯文本T
,则无法返回继承类型。因此,如果存在一个GLFWwindow
s的类层次结构,所有这些继承自GLFWwindow
一个基类,则可以返回指向该基类的指针,以便您进行一般处理。PS-具有五个构造函数参数,并传递使不清楚要设置哪个构造函数参数的参数是有问题的设计。具体来说-我们无法说出第一个nullptr
表示什么,也不能区分第二个nullptr
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句