gpt4 book ai didi

c++ - 实现复制构造函数

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:40:24 25 4
gpt4 key购买 nike

我有以下类定义,它需要一个复制构造函数,以便进行深复制以复制原始指针。有人可以就如何最好地做到这一点提出建议吗?

使用 xerces-c++对于 XML

class XMLDocument 
{
private:
typedef std::vector<XML::XMLNode> v_nodes;
public:
XMLDocument::XMLDocument();
XMLDocument::XMLDocument(const XMLDocument& copy);
XMLDocument::~XMLDocument();

XMLDocument& operator=(XMLDocument const& rhs);

void CreateDocument(const std::string& docname);
void AddChildNode(XMLNode& node);
void RemoveNode(XMLNode& node);
void AddNodeValue(XMLNode& node, const std::string& value);
void AddNodeValue(XMLNode& node, int value);
void AddNodeValue(XMLNode& node, double value);
void AddNodeValue(XMLNode& node, float value);
std::string GetXMLAttributes();
std::string GetXMLAttribute(const std::string& attrib);
std::string GetXMLNodeText(XML::XMLNode& node);
std::string DumpToString();
XMLNode GetXPathNode(const std::string xpathXpression);
XMLNode GetNode(const XMLNode &currentnode);

typedef v_nodes::iterator nodes_iterator;
nodes_iterator begin()
{
nodes_iterator iter;
iter = xmlnodes.begin();

return iter;
}
nodes_iterator end()
{
nodes_iterator iter;
iter = xmlnodes.end();

return iter;
}


private:
v_nodes xmlnodes;

bool InitializeXML();
DOMImplementation* impl; //Abstract
DOMDocument* document; //Abstract
DOMElement* rootelement; //Abstract

};

DOMDocument 是调用函数创建的也是 DOMElement。所以我不能只对这些指针调用 new。

不确定我是否真的重新创建了所有这些对象?

例子:

document = impl->createDocument(0, "mydoc", 0);

谁在没有给出理由的情况下大发雷霆???

最佳答案

此页面肯定有帮助:
http://icu-project.org/docs/papers/cpp_report/the_anatomy_of_the_assignment_operator.html

请注意,它们是编写复制构造函数和赋值运算符之间的区别,但本文也讨论了这一点。

关于c++ - 实现复制构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4088411/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com