gpt4 book ai didi

c++ - =delete 函数的继承

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

假设我有一个名为 File 的类。我想为 File 的每个子对象禁用复制构造函数,例如 TextFile

这样做是否仍然会禁用 TextFile 的复制构造函数?

class File {
public:
File(const File& f) = delete;
};

class TextFile:public File {
public:
};

或者这是为了禁用它所必需的吗?

class File {
public:
File(const File& f) = delete;
};

class TextFile:public File {
public:
TextFile(const TextFile& tf) = delete;
};

最佳答案

您的第一个代码块就是您所需要的。由于 File 不可复制,因此当编译器为 TextFile 生成复制构造函数时,它会发现并隐式删除它,因为它无法生成合法的复制构造函数。

但它不会阻止您在派生类中创建自己的复制构造函数。如果您对此没有意见,那么这就是您所需要的。

关于c++ - =delete 函数的继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57993273/

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