说我有一个结构:
struct TrieNode {
const NumChars = 26;
bool isWord;
int letterCount;
TrieNode *letters[NumChars];
TrieNode() {
isWord = false;
for ( int i = 0; i < NumChars; i += 1 ) {
letters[i] = NULL;
} // for
letterCount = 0;
}
};
我在堆上这样创建一个TrieNode:
TrieNode *root = new TrieNode();
现在如何创建根的其他副本? (深复制)
最佳答案
在C++中,您可以通过定义自定义的“复制构造函数”来实现。格式为:
TrieNode(const TrieNode& copyFrom){
//Do the copying here
}
然后,您可以随时使用此功能:
TrieNode example;
TrieNode deep(example);
TrieNode deep2 = example;
如果要定义复制构造函数,则还可能需要定义一个析构函数和一个赋值运算符。这称为Rule of 3。
如果实现赋值运算符(
=
),则还可以编写如下代码:TrieNode example;
TrieNode deep;
//Do stuff
deep = example; //Still a deep copy.
关于c++ - struct C++的深层拷贝,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13148053/