gpt4 book ai didi

c++ - 删除修饰符与将函数声明为私有(private)

转载 作者:IT老高 更新时间:2023-10-28 22:33:30 26 4
gpt4 key购买 nike

我读过 this问题,但这对我来说仍然没有多大意义。这听起来更像是一个糖衣功能。

两者有什么区别:

class A 
{
// public/private ?
A (const A&) = delete;
};

class A 
{
private:
A (const A&); // MISSING implementation
};

operator= 或其他函数也一样。

最佳答案

一个区别是 =delete 允许 compile-time 错误,而在某些情况下,没有定义的声明仅在 link-time(错误消息通常不会将您指向问题的根源)。一种这样的情况是当您添加一个试图复制 A 实例的成员函数时。即使它不是A 的成员函数,关于copy-ctor 是private 的错误消息也没有使用=delete 那样清楚。

为避免混淆,我建议您将已删除的函数设为 public,否则您会收到额外的误导性错误消息。

关于c++ - 删除修饰符与将函数声明为私有(private),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18847957/

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