gpt4 book ai didi

c++ - 为什么 boost::noncopyable 需要继承

转载 作者:IT老高 更新时间:2023-10-28 12:52:32 26 4
gpt4 key购买 nike

将任何不可复制的成员添加到类将阻止自动生成复制构造和赋值运算符。为什么 boost 需要继承才能使用不可复制?

我认为我对

的风格偏好并不孤单
class MyUtility : public MyBase
{
noncopyable guard;
...
};

相对于

class MyUtility : public MyBase , private noncopyable
{
...
};

Dave Abrahams 是个聪明人,所以他可能考虑过这种可能性。我错过了什么?继承有什么作用?

最佳答案

因为 sizeof(boost::noncopyable)!=0。所以在这种情况下,你的类(class)规模会更大。

Here您可以阅读有关空基优化的信息。 (查看“4.7:空成员优化”部分)。

编辑:事实上,noncopyable 没有公共(public)构造函数,这使得它无法用于任何其他用途,而具有公共(public)构造函数的类也可能用于其他错误目的。这是 boost 选择这种方法的另一个原因。

关于c++ - 为什么 boost::noncopyable 需要继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4829696/

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