whi*_*hoa 3 c++ std stdoptional
我想我对如何存储可选值有点困惑。在构造包含std::optional<T>成员的类或结构时,这些成员是连续存储在内存中还是动态分配可选?例如,下面的结构是一个连续的内存块吗?
struct Material
{
std::string name;
std::optional<size_t> albedo;
std::optional<size_t> normal;
std::optional<size_t> metalness;
std::optional<size_t> roughness;
std::optional<size_t> ao; // ambient occlusion
bool hasAlphaChannel = false;
};
Run Code Online (Sandbox Code Playgroud)
optional 要求不使用动态分配。
如果一个可选项包含一个值,则保证该值作为可选对象占用空间的一部分进行分配,即永远不会发生动态内存分配。因此,即使定义了 operator*() 和 operator->() ,可选对象也建模对象,而不是指针。
https://en.cppreference.com/w/cpp/utility/optional
还有optional可能发生的成员变量和填充。所以不,它们不一定是连续的,但它们在您声明它们的对象内。
| 归档时间: |
|
| 查看次数: |
96 次 |
| 最近记录: |