以对象指针为参数的 C++ 复制构造函数
C++ copy constructor with object pointer as argument
我对 C++ 的复制和赋值构造函数仍然有些犹豫。到目前为止,我所拥有的是 A.hpp
:
class A {
private:
char* str;
public:
A(char* str);
// strcpy str from other to this.
A(const A& other);
// free str in this, and strcpy str from other to this.
A& operator=(const Type& other);
}
假设我有 A* a = new A(some_char_str);
,我可以写 A b = *a;
,而 b
是 a
的深拷贝。
现在的问题是我想要写 A* b = new A(a);
的能力 那么我如何指定一个构造函数,它接受一个指向 A
的指针并在堆上创建一个新的 A
?
哦,好吧,脑子放屁...我刚刚意识到我可以自己提供构造函数 A::A(const A* other)
而无需使用 copy/assignment 构造函数,
或者按照评论中的建议写 A* b = new A(*a);
。
我对 C++ 的复制和赋值构造函数仍然有些犹豫。到目前为止,我所拥有的是 A.hpp
:
class A {
private:
char* str;
public:
A(char* str);
// strcpy str from other to this.
A(const A& other);
// free str in this, and strcpy str from other to this.
A& operator=(const Type& other);
}
假设我有 A* a = new A(some_char_str);
,我可以写 A b = *a;
,而 b
是 a
的深拷贝。
现在的问题是我想要写 A* b = new A(a);
的能力 那么我如何指定一个构造函数,它接受一个指向 A
的指针并在堆上创建一个新的 A
?
哦,好吧,脑子放屁...我刚刚意识到我可以自己提供构造函数 A::A(const A* other)
而无需使用 copy/assignment 构造函数,
或者按照评论中的建议写 A* b = new A(*a);
。