关于类唯一指针的问题(.h中变量初始化VS构造函数中)

问题描述 投票:0回答:1

我是一个初学者,从独特的指针开始

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

的使用似乎有所不同,但我不明白为什么。
c++ pointers constructor instantiation unique-ptr
1个回答
0
投票

情况1中,构造
A
时,直接将
A::b

初始化为1。

在情况 2 中,当构造 
A
 时,它首先默认初始化 
A::b
,然后为其分配另一个初始化为 1 的 
B

对象。

这对 unique_ptr

make_unique()
 的操作方式
没有任何影响。

© www.soinside.com 2019 - 2024. All rights reserved.