C++ 指针类型是指向“的唯一方法吗?”;防止;在声明中调用构造函数?
我试图寻找这个,但我没有找到任何答案。让我们看看这个:C++ 指针类型是指向“的唯一方法吗?”;防止;在声明中调用构造函数?,c++,pointers,C++,Pointers,我试图寻找这个,但我没有找到任何答案。让我们看看这个: 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' her
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
}
我的问题是:我可以在不创建对象的情况下声明它吗?还是我总是要用指针
我的问题是:我可以在不创建对象的情况下声明它吗
没有
还是我总是要用指针
不,指针是一种选择。还有其他一些,例如boost::optional
(std::optional
也在标准化过程中)。还有智能指针(std::unique_ptr
或std::shared_ptr
)。一个标准的c++11之前版本的选项是std::vector
,它比原始指针更容易管理,在这里您只添加一个元素
但是你确定你需要这个吗
我的问题是:我可以在不创建对象的情况下声明它吗
没有
还是我总是要用指针
不,指针是一种选择。还有其他一些,例如boost::optional
(std::optional
也在标准化过程中)。还有智能指针(std::unique_ptr
或std::shared_ptr
)。一个标准的c++11之前版本的选项是std::vector
,它比原始指针更容易管理,在这里您只添加一个元素
但是你确定你需要这个吗?你为什么想要?你想实现什么?你为什么想要?你想达到什么目的?我其实什么都不需要它,因为我一直在使用指针类型,在一些场景中,我需要一个对象包含成员变量,例如,必须按特定顺序创建成员变量。我只是在想这个。来自Java和C#的世界,声明一个对象也会初始化它,这让人感觉很反直觉。谢谢你的回答。我真的什么都不需要它,因为我一直在使用指针类型,在一些场景中,我需要一个对象具有成员变量,例如,必须按特定顺序创建。我只是在想这个。来自Java和C#的世界,声明一个对象也会初始化它,这让人感觉很反直觉。谢谢你的回答。