给定以下代码,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/