gpt4 book ai didi

c++ - 循环依赖类的复制构造函数和赋值运算符重载

转载 作者:行者123 更新时间:2023-11-30 01:39:10 25 4
gpt4 key购买 nike

我在我的代码中使用了一些供应商库。一些代码如下所示。我看到它在类之间使用循环依赖。我无法理解将复制构造函数和赋值设为私有(private)的原因是什么。静态代码分析工具之一会引发违规,因为“避免使用‘new’来分配实例但不定义复制构造函数的类。”

class Parent;

class Child{
public:
Child(Parent& parent):mrParent(parent);

private:
Parent& mrParent;
};

class Parent{
public:
Parent();
~Parent();
//other declarations
Child* child;
private:
//copy and assignment are not allowed. Explicitly declaring private
Parent(const Parent&)
Parent& operator=(const Parent&);
};

最佳答案

您拥有的是避免复制构造和分配给类的常用方法。
正如评论中所述,这就是编写该代码的人的意图:

//copy and assignment are not allowed. Explicitly declaring private

因为复制构造函数和赋值运算符都被声明但没有实现,这可能会导致静态分析工具发出警告。

在 C++11 中,拒绝复制构造和赋值的更好方法是:

Parent(const Parent&) = delete;
Parent& operator=(const Parent&) = delete;

这也应该避免来自静态分析工具的警告(如果没有,该工具可能已损坏)。

关于c++ - 循环依赖类的复制构造函数和赋值运算符重载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46278799/

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