You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++中抽象类是否会默认生成拷贝构造函数和赋值运算符?

抽象类的默认拷贝构造与赋值运算符

抽象类确实会默认生成拷贝构造函数和赋值运算符,规则和普通类基本一致——只要你没有显式声明对应的函数,编译器就会自动为抽象类生成这些默认函数。

关键细节说明:

  • 默认生成的函数行为和普通类完全相同:对类的所有非静态成员执行浅拷贝,包括从基类继承来的成员(前提是基类的拷贝/赋值操作是可用的)。
  • 虽然抽象类本身不能直接实例化,但它的派生类会依赖这些默认函数:比如当派生类没有自定义拷贝构造函数时,会调用抽象基类的默认拷贝构造来初始化基类部分的成员。
  • 如果你想禁止抽象类的拷贝/赋值行为,可以显式删除这些函数:
    class Abstract {
    public:
        virtual void func() = 0; // 纯虚函数,标记为抽象类
        virtual ~Abstract() = default;
        Abstract(const Abstract&) = delete; // 禁用拷贝构造
        Abstract& operator=(const Abstract&) = delete; // 禁用赋值运算符
    };
    

内容的提问来源于stack exchange,提问作者Nishikant

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 17:44:57