我搜索了抽象类是否存在构造函数。我发现答案是肯定的,这些构造函数可以被派生类对象调用或使用。
抽象类的用户定义构造函数怎么样?
我们可以为抽象类编写或定义默认,参数化或复制构造函数吗?
答案 0 :(得分:2)
抽象类的用户定义构造函数怎么样?
是,
我们可以为其编写或定义默认,参数化或复制构造函数 抽象类??
是
抽象类无法实例化,因为它意味着它是一个基类,你应该为它定义一个虚拟析构函数。
答案 1 :(得分:1)
通常在基类中包含受保护的构造函数:它们用于初始化类的私有变量。对于派生类的构造函数,它们被隐式或显式调用:
示例:
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
...
}
...
};
建议使用虚拟析构函数,因为它确保如果任何子类具有自定义析构函数,它将被调用。