我对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
?
答案 0 :(得分:1)
哦大脑放屁......我刚才意识到我可以自己提供构造函数A::A(const A* other)
而不使用复制/赋值构造函数,
或者只是按评论中的建议写下A* b = new A(*a);
。