You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在模板类中初始化std::array并将其置零?

解决方法

有几种简洁的方式能让MyClass内部的std::array<gsl::byte, aLen>在默认构造时被初始化为全零:

方式一:构造函数成员初始化列表值初始化

直接在构造函数的成员初始化列表中对数组进行值初始化,会自动将所有元素置为零:

template <size_t aLen>
class MyClass
{
public:
    MyClass() : mArray{} {}
private:
    std::array<gsl::byte, aLen> mArray;
};

方式二:类内成员直接初始化

无需显式编写构造函数,在成员声明阶段就用值初始化语法,默认构造函数会自动完成数组的零初始化:

template <size_t aLen>
class MyClass
{
private:
    std::array<gsl::byte, aLen> mArray{};
};

方式三:构造函数内手动填充(显式操作)

如果需要更直观的显式操作,可以借助std::fill完成填充,不过前两种方式更高效简洁:

#include <algorithm>

template <size_t aLen>
class MyClass
{
public:
    MyClass()
    {
        std::fill(mArray.begin(), mArray.end(), gsl::byte{0});
    }
private:
    std::array<gsl::byte, aLen> mArray;
};

以上三种方式都能达成需求:创建MyClass<8>或MyClass<16>对象时,内部数组会被初始化为全零。

内容的提问来源于stack exchange,提问作者user13295228

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 07:52:01