我是一个初学者,从独特的指针开始
unique_ptr
,我有一个关于它们的问题:
如果我有一个类
A
并且里面是.h我还有另一个类B
,如下所示:
class A{
B b;
public:
A();
}
(考虑包含的内容)
如果我想创建
unique_ptr
的 A
B
在这些情况下有什么区别 :
(
unique_ptr<A> a = make_unique<A>()
)案例1:
class A{
B b = b(1);
public:
A();
}
和案例2:
class A{
B b;
public:
A();
}
A() 的构造函数内部:
A::A() {
b = b(1);
}
对于每个人来说,
B
里面的
A
的使用似乎有所不同,但我不明白为什么。
情况1中,构造
A
时,直接将
A::b
初始化为1。
在情况 2 中,当构造
A
时,它首先默认初始化
A::b
,然后为其分配另一个初始化为 1 的
B
对象。
这对 unique_ptr
或
make_unique()
的操作方式没有任何影响。