gpt4 book ai didi

C++ 默认构造函数不初始化指向 nullptr 的指针?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:07:11 25 4
gpt4 key购买 nike

我想知道我的类中是否有一个 A* 成员,如果我有一个这种形式的类的构造函数,我们不应该自动设置为 nullptr :

class MyCLass
{
A* m_pointer;

public:
MyCLass()
{
}
};

我在 C++11 中执行 MyCLass* o = new MyCLass; 还是执行 MyCLass* o = new MyCLass(); 有关系吗?

最佳答案

指针是“POD 类型”……又名。 “普通旧数据”。此处总结了何时何地对它们进行默认初始化的规则:

Default initialization of POD types in C++

所以没有。如果类的构造函数是作为类成员的原始指针,那么它并不重要。您实际上并没有实例化该类。所以成员(member)喜欢Foo *std::vector<Foo> *或以 * 结尾的任何内容都不会被初始化为 nullptr。

智能指针类不是 POD。所以如果你使用 unique_ptr<Foo>shared_ptr<Foo>那是创建类的实例,如果您不初始化它们,它们确实有一个构造函数,可以使它们有效地为 null。

Does it matter if I do MyCLass* o = new MyCLass; or I do MyCLass* o = new MyCLass(); in C++11?

请每个问题一个问题。

Do the parentheses after the type name make a difference with new?

关于C++ 默认构造函数不初始化指向 nullptr 的指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26142100/

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