抽象类的用户定义构造函数

user defined constructor for an abstract class

本文关键字:构造函数 定义 用户 抽象类      更新时间:2023-10-16

我已经搜索了抽象类是否存在构造函数。我发现答案是肯定的,这些构造函数可以由派生类对象调用或使用。

抽象类的用户定义构造函数怎么样?

我们可以为抽象类编写或定义默认、参数化或复制构造函数吗?

抽象类的用户定义构造函数怎么样?

是的

我们可以编写或定义默认、参数化或复制构造函数吗 抽象类??

是的

抽象类不能实例化,由于它意味着基类,因此您应该为它定义一个虚拟析构函数。

演示:http://coliru.stacked-crooked.com/a/a4b851e70667bb59

基类中具有受保护的构造函数是很常见的:它们用于初始化类的私有变量。对于派生类的构造函数,隐式或显式调用它们:

  • 隐式调用复制构造函数的默认值
  • 必须显式调用参数化构造函数

例:

class Base {
    private int i;
public:
    Base(int val) {
        i = val;
    }
    virtual ~Base() { // always a virtual dtor in base class ...
    }
    // other methods ...
};
class Derived: public Base {
...
public:
    Derived(): Base(0) { // explicit call necessary because no default ctor in Base
        ...
    }
    ...
};

建议使用虚拟析构函数,因为它可确保如果任何子类具有自定义析构函数,则会调用该析构函数。