gpt4 book ai didi

C++ auto_ptr 和拷贝构造

转载 作者:行者123 更新时间:2023-11-28 03:57:08 24 4
gpt4 key购买 nike

如果我有课

template <typename T>
struct C {
...

private:
auto_ptr<T> ptr;
};

如何为 C 定义复制构造函数:

不可能

template <typename T>
C<T>::C(const C& other)

因为我想如果我从其他人那里复制auto_ptr,我已经通过删除改变了其他人所有权。将复制构造函数定义为合法吗

template <typename T>
C<T>::C(C& other) {}

最佳答案

你真的想复制你的类的状态还是转移它?如果你想复制它,那么你可以像任何其他带有指针的类一样进行复制:

template < typename T >
C<T>::C(C const& other) : ptr(new T(*other.ptr)) {} // or maybe other.ptr->clone()

如果您真的想转移指针的所有权,您可以使用非常量“复制”构造函数来完成,但我建议您在调用站点做一些更明显的事情;告诉阅读代码的人所有权已经转移的东西。

关于C++ auto_ptr 和拷贝构造,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3088097/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com