C++ 中的简单复制构造函数
Simple copy constructor in C++
假设我们在 C++ 中有两个 类:
Class A{
public:
A();
private:
int k;
};
Class B{
public:
B();
private:
A a;
};
我编辑我的问题,这样它对有朝一日达到它的人更有帮助。
我如何编写 B
的复制构造函数(它确实是一个复制构造函数?)以使用另一个对象实例初始化 a
(属于 Class A
类型) A
(假设为a_inst
)之前已经定义和初始化了?
换句话说,ctor B() 的代码是什么?
Class A{
public:
A();
A(const A& obj);
private:
int k;
};
Class B{
public:
B();
B(const B& obj)
: a(obj.a) { }
B(const A& obj)
: a(obj) { }
private:
A a;
};
我会这样做
B(const A ¶mA) : a(paramA) {}
B(A &¶mA) : a(move(paramA)) {}
B(const B &src) : a(src.a) {}
除了复制构造函数之外,我还提出了两个额外的构造函数,一个可以由 A 的左值实例初始化,另一个用于右值实例。根据 A 的语义,您可能不需要移动版本。
假设我们在 C++ 中有两个 类:
Class A{
public:
A();
private:
int k;
};
Class B{
public:
B();
private:
A a;
};
我编辑我的问题,这样它对有朝一日达到它的人更有帮助。
我如何编写 B
的复制构造函数(它确实是一个复制构造函数?)以使用另一个对象实例初始化 a
(属于 Class A
类型) A
(假设为a_inst
)之前已经定义和初始化了?
换句话说,ctor B() 的代码是什么?
Class A{
public:
A();
A(const A& obj);
private:
int k;
};
Class B{
public:
B();
B(const B& obj)
: a(obj.a) { }
B(const A& obj)
: a(obj) { }
private:
A a;
};
我会这样做
B(const A ¶mA) : a(paramA) {}
B(A &¶mA) : a(move(paramA)) {}
B(const B &src) : a(src.a) {}
除了复制构造函数之外,我还提出了两个额外的构造函数,一个可以由 A 的左值实例初始化,另一个用于右值实例。根据 A 的语义,您可能不需要移动版本。