草庐IT

together_unique

全部标签

c++ - 具有 unique_ptr 的类的复制构造函数

如何为具有unique_ptr成员变量的类实现复制构造函数?我只考虑C++11。 最佳答案 由于unique_ptr无法共享,您需要深度复制其内容或将unique_ptr转换为shared_ptr。classA{std::unique_ptrup_;public:A(inti):up_(newint(i)){}A(constA&a):up_(newint(*a.up_)){}};intmain(){Aa(42);Ab=a;}正如NPE所提到的,您可以使用move-ctor而不是copy-ctor,但这会导致类的不同语义。move-c

c++ - 具有 unique_ptr 的类的复制构造函数

如何为具有unique_ptr成员变量的类实现复制构造函数?我只考虑C++11。 最佳答案 由于unique_ptr无法共享,您需要深度复制其内容或将unique_ptr转换为shared_ptr。classA{std::unique_ptrup_;public:A(inti):up_(newint(i)){}A(constA&a):up_(newint(*a.up_)){}};intmain(){Aa(42);Ab=a;}正如NPE所提到的,您可以使用move-ctor而不是copy-ctor,但这会导致类的不同语义。move-c

c++ - 为什么 shared_ptr<void> 合法,而 unique_ptr<void> 格式不正确?

这个问题确实符合标题:我很想知道造成这种差异的技术原因是什么,以及基本原理?std::shared_ptrsharedToVoid;//legal;std::unique_ptruniqueToVoid;//ill-formed; 最佳答案 这是因为std::shared_ptr实现了类型删除,而std::unique_ptr没有。由于std::shared_ptr实现了类型删除,它还支持另一个有趣的属性,即。它确实不需要删除器的类型作为模板类型参数到类模板。看看他们的声明:template>classunique_ptr;其中有D

c++ - 为什么 shared_ptr<void> 合法,而 unique_ptr<void> 格式不正确?

这个问题确实符合标题:我很想知道造成这种差异的技术原因是什么,以及基本原理?std::shared_ptrsharedToVoid;//legal;std::unique_ptruniqueToVoid;//ill-formed; 最佳答案 这是因为std::shared_ptr实现了类型删除,而std::unique_ptr没有。由于std::shared_ptr实现了类型删除,它还支持另一个有趣的属性,即。它确实不需要删除器的类型作为模板类型参数到类模板。看看他们的声明:template>classunique_ptr;其中有D

django - 如何将两个字段 "unique"定义为一对

有没有办法在Django中将几个字段定义为唯一的?我有一个(期刊)卷表,我不希望同一期刊有多个卷号。classVolume(models.Model):id=models.AutoField(primary_key=True)journal_id=models.ForeignKey(Journals,db_column='jid',null=True,verbose_name="Journal")volume_number=models.CharField('VolumeNumber',max_length=100)comments=models.TextField('Comments

django - 如何将两个字段 "unique"定义为一对

有没有办法在Django中将几个字段定义为唯一的?我有一个(期刊)卷表,我不希望同一期刊有多个卷号。classVolume(models.Model):id=models.AutoField(primary_key=True)journal_id=models.ForeignKey(Journals,db_column='jid',null=True,verbose_name="Journal")volume_number=models.CharField('VolumeNumber',max_length=100)comments=models.TextField('Comments

c++ - 带有数组的 unique_ptr 有什么用吗?

std::unique_ptr支持数组,例如:std::unique_ptrp(newint[10]);但是需要吗?可能使用std::vector或std::array更方便。你觉得这个结构有什么用处吗? 最佳答案 有些人没有使用std::vector的奢侈,即使有分配器。有些人需要一个动态大小的数组,所以std::array出来了。有些人从已知返回数组的其他代码中获取数组;并且该代码不会被重写以返回vector什么的。通过允许unique_ptr,您就可以满足这些需求。简而言之,您使用unique_ptr当您需要时。当替代方案根本

c++ - 带有数组的 unique_ptr 有什么用吗?

std::unique_ptr支持数组,例如:std::unique_ptrp(newint[10]);但是需要吗?可能使用std::vector或std::array更方便。你觉得这个结构有什么用处吗? 最佳答案 有些人没有使用std::vector的奢侈,即使有分配器。有些人需要一个动态大小的数组,所以std::array出来了。有些人从已知返回数组的其他代码中获取数组;并且该代码不会被重写以返回vector什么的。通过允许unique_ptr,您就可以满足这些需求。简而言之,您使用unique_ptr当您需要时。当替代方案根本

c++ - unique_ptr 和 shared_ptr 的区别

这个问题在这里已经有了答案:关闭11年前.PossibleDuplicates:pimpl:shared_ptrorunique_ptrsmartpointers(boost)explained有人能解释一下shared_ptr和unique_ptr之间的区别吗? 最佳答案 这两个类都是智能指针,这意味着它们会自动(在大多数情况下)在无法再引用该对象时释放它们指向的对象。两者的区别在于每种类型有多少个不同的指针可以引用一个资源。当使用unique_ptr时,最多可以有一个unique_ptr指向任一资源。当unique_ptr被销毁

c++ - unique_ptr 和 shared_ptr 的区别

这个问题在这里已经有了答案:关闭11年前.PossibleDuplicates:pimpl:shared_ptrorunique_ptrsmartpointers(boost)explained有人能解释一下shared_ptr和unique_ptr之间的区别吗? 最佳答案 这两个类都是智能指针,这意味着它们会自动(在大多数情况下)在无法再引用该对象时释放它们指向的对象。两者的区别在于每种类型有多少个不同的指针可以引用一个资源。当使用unique_ptr时,最多可以有一个unique_ptr指向任一资源。当unique_ptr被销毁