gpt4 book ai didi

c++ - 已删除的构造函数必须是私有(private)的吗?

转载 作者:IT老高 更新时间:2023-10-28 12:56:19 24 4
gpt4 key购买 nike

class A
{
public:
A() = default;
A(const A&) = delete;
};

class A
{
public:
A() = default;

private:
A(const A&) = delete;
};

这两个定义在任何情况下总是彼此相同吗?

最佳答案

它们是不同的仅在生成的诊断程序方面。如果将其设为 private,则会报告额外的多余访问冲突:

class A
{
public:
A() = default;
private:
A(const A&) = delete;
};

int main()
{
A a;
A a2=a;
}

导致 GCC 4.8 的以下附加输出:

main.cpp: In function 'int main()':
main.cpp:6:5: error: 'A::A(const A&)' is private
A(const A&) = delete;
^
main.cpp:12:10: error: within this context
A a2=a;
^

因此我建议始终将已删除的方法设为 public

关于c++ - 已删除的构造函数必须是私有(private)的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18931133/

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