是否为 C++ 中的抽象类创建了默认的复制构造函数和赋值运算符?

Are the default copy constructors and assignment operator created for an abstract class in C++?

提问人:Nishikant 提问时间:3/10/2023 最后编辑:Nishikant 更新时间:3/10/2023 访问量:73

问:

有一个默认的复制构造函数/赋值运算符,它执行浅层复制。 这些是否是默认创建的,即使是抽象类?

C++ 构造函数 pure-virtual

评论

0赞 Pete Becker 3/10/2023
术语:抽象类是具有一个或多个纯虚函数的类。没有纯粹的虚拟类这样的东西。
0赞 Thomas Matthews 3/10/2023
“纯虚拟类”有数据成员吗?
1赞 Pete Becker 3/10/2023
至于这个问题,是的,这些函数是生成的;派生类需要它们来实现复制构造函数和赋值运算符。
0赞 Nishikant 3/10/2023
@ThomasMatthews - 是的,该类具有成员变量。
0赞 Pete Becker 3/10/2023
@ThomasMatthews -- 在实现方面,抽象类有一个 vtable 指针。

答:

5赞 Remy Lebeau 3/10/2023 #1

抽象的类(即具有纯虚方法)不会改变编译器可能为该类自动生成的内容。它所做的只是要求类不直接实例化,并且必须在派生类中重写其纯虚方法。就是这样。抽象基类必须仍然能够初始化/赋值到,就像任何其他类一样。