这是关于理解glm源代码的问题。我想知道glm是否会对其类进行零初始化,并尝试了一下。是的,即使没有提供构造函数值,
有这个部分:
我看到一个没有定义的
glm :: vec3
和glm :: mat4
也会被初始化。然后我想了解它是如何实现的,并阅读了glm :: mat4
模板的源代码。有这个部分:
...
enum ctor{null};
// Constructors
GLM_FUNC_DECL tmat4x4();
GLM_FUNC_DECL tmat4x4(tmat4x4 const & m);
GLM_FUNC_DECL explicit tmat4x4(ctor Null);
...
我看到一个没有定义的
(void)
构造函数(ctor),所以没有 {...}
部分。还有一个显式的构造函数,使用 enum ctor
类型的第一个元素 0
作为参数,当然得到索引值 0
。
- 构造函数定义在哪里?我该如何找到它们?
- 那个显式的 Null 构造函数是用来做什么的?
- 当我只写
glm::mat4 myMatrix;
时,glm::mat4
怎样初始化为单位矩阵?
编辑:在 GitHub 上浏览更多当前的源文件,从 mat4x4.hpp
到 detail/type_mat4x4.hpp
,其中 #include
在type_mat4x4.inl中包含实现细节。在那里,构造函数的行为变得可见。