gpt4 book ai didi

c++ - 指针类型是在声明中调用 "prevent"构造函数的唯一方法吗?

转载 作者:太空宇宙 更新时间:2023-11-04 16:18:11 25 4
gpt4 key购买 nike

我试图搜索此内容,但没有找到任何答案。让我们看看这个:

class Foo
{
Foo();
Bar a; // 'a', the object, gets created (even if I don't want to!)
Bar* b; // 'b', the pointer, gets created, but the object doesn't
}

Foo::Foo()
{
a = a(); // I'd like to create 'a' here instead. This just "replaces" it
b = new Bar(); // 'b', the object, gets created
}

我的问题是:我可以声明一个对象而不创建它吗?还是我总是必须使用指针?

最佳答案

My question is: can I declare an object without creating it as well?

没有。

Or do I always have to use pointers?

没有。指针是一种选择。还有其他的,例如 boost::optional(std::optional 也在标准化过程中)。还有智能指针(std::unique_ptrstd::shared_ptr)。 std::vector 是一个标准可用的 c++11 之前的选项,它比原始指针更易于管理,您只需要在其中添加一个元素。

但是你真的确定你需要这个吗?

关于c++ - 指针类型是在声明中调用 "prevent"构造函数的唯一方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20177888/

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