gpt4 book ai didi

c++ - 如何确保 C++ 类模板中非静态数据成员的正确初始化

转载 作者:行者123 更新时间:2023-12-02 18:24:51 25 4
gpt4 key购买 nike

我正在使用 C++ 中的模板,并且想知道如何正确(值)初始化类模板中的非静态数据成员。例如,考虑以下代码片段:

template<typename T>
class MyVector
{
T x; // x has undefined value for a built in type
};

现在我知道数据成员x对于本地/ block 范围内的内置类型具有垃圾值,除非显式初始化。

所以我想对数据成员进行值初始化。如果我将上面的代码修改为:

template<typename T>
class MyVector
{
T x(); // now x becomes a member function
};

从上面修改后的代码片段中可以看出,x 现在是一个成员函数。如何值初始化类型T的数据成员x

最佳答案

您可以使用default member initializer (C++11 起),仅支持等号或大括号初始值设定项,但不支持括号。

template<typename T>
class MyVector
{
T x{};
// or
T x = T();
};

或者提供带有成员初始值设定项列表的用户定义构造函数。

template<typename T>
class MyVector
{
T x;
MyVector() : x() {}
};

关于c++ - 如何确保 C++ 类模板中非静态数据成员的正确初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70365084/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com