gpt4 book ai didi

c++ - 复制构造函数中的指针

转载 作者:搜寻专家 更新时间:2023-10-31 00:20:46 24 4
gpt4 key购买 nike

我有一个复制构造函数,看起来像这样:

Qtreenode(const QtreeNode * & n) {

x=n->x;
y=n->y;
height=n->height;
width=n->width;
element=n->element;

我一周前写了这篇文章,今天回头看,我对用 say swChild=new QtreeNode(*(n->swChild)); 调用复制构造函数时的那一行感到惊讶。 cc 的参数是一个引用指针,对吧?但是当我调用它时,我调用了 (*(n->swChild)),这意味着那个 child 的值(value)对吧?为什么我的代码有效?

最佳答案

那不是拷贝构造函数。类的复制构造函数是采用类类型引用的构造函数。以下任何一个都是复制构造函数,尽管第二个采用 const 引用,是迄今为止最常用的:

QTreeNode(QTreeNode&);
QTreeNode(const QTreeNode&);
QTreeNode(volatile QTreeNode&);
QTreeNode(const volatile QTreeNode&);

由于这不是复制构造函数,因此仍提供隐式声明的复制构造函数。它被声明为 QTreeNode(const QTreeNode& n) 并且基本上只复制类的每个成员(即,它是一个“浅”拷贝,而不是“深”拷贝)。您的代码中使用的正是这个隐式声明的复制构造函数。

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

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