c++ - 模板复制构造函数

标签 c++

给定以下代码,Foo 是否有复制构造函数?将 Foo 与 STL 容器一起使用安全吗?

class Foo
{
public:
   Foo() {}

   template <typename T>
   Foo(const T&) {}   
};

最佳答案

该标准明确指出,复制构造函数是一种非模板构造函数,它引用同一类型的可能为 const-volatile 的对象。在上面的代码中,您有一个转换但没有复制构造函数(即它将用于所有拷贝,其中隐式声明的构造函数将被使用)。

Does Foo have a copy constructor?

是的,隐式声明/定义的复制构造函数。

Is it safe to use Foo with standard library containers?

根据 Foo 的当前定义,它是,但在一般情况下,这取决于 Foo 有哪些成员以及隐式定义的复制构造函数是否正确管理这些成员。

关于c++ - 模板复制构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12374303/

相关文章:

c++ - 生成文件 : "ignoring #pragma omp parallel" 的 openmp 问题

c++ - 如何在 C++ 中的 if 语句中检查 lambda 的返回值?

c++ - 已经使用 tr1::hash 在此范围内声明了“hash”;

c++ - 将对象传递给函数和构造函数中的动态内存分配

c++ - QGraphicsTextItem 编辑需要执行两次操作

c++ - 如果我们可以将特定数组元素增加/减少 1,则平衡数组的最小总移动量

由于权限错误,C++ 编译器输出未运行

c++ - long * tempArray[10]; 是什么意思?做?

c++ - 关于 pthread_exit 释放自动变量的混淆

c++ - 从 .c 文件中定义的 .cpp 文件调用的函数