![]() |
1
4
C++中的指针可用于聚合和合成。区别在于 noted by Douglas ,对象的生存期是否互连。换句话说:当父母被毁灭时,孩子是否也被毁灭了?答案是 对 代表合成, 不 用于聚合。 我们如何在C++代码中区分这些情况?C++中的指针可以表示另一个(动态创建的)对象的所有权,也可以只引用其他人拥有的对象。让我们在示例中显示差异。我将解释为什么指针对每种类型的关系都有用。 带指针的聚合
在这种情况下,只需向前声明
带指针的合成
最长的示例表明,我们可以动态创建和销毁
免责声明此示例是 Rule of three/five/zero . 我有意让用户来实现缺少的推荐方法,使这个答案方言不可知,并且尽可能简单。 无指针合成
无需手动编写构造函数和析构函数,只需声明
无指针聚合
完整地说,使用指针进行聚合的替代方法是使用引用。但是,这会阻止交换
|
![]() |
Jivan · 使用mypy在Python中强制合成 2 年前 |
![]() |
woockashek · Java中同一类的继承和组合 7 年前 |
![]() |
Sepehr Sobhani · 函数Ramda在范围外传递函数参数 7 年前 |
![]() |
M. Pilarczyk · 如何确保合成方法的安全? 8 年前 |
![]() |
daign · 在JavaScript中混合作为对象本身的对象属性 9 年前 |
![]() |
arjacsoh · 当不允许多重继承时,如何避免代码重复? 10 年前 |