派生类的构造函数
默认情况
基类的构造函数不被继承;
派生类需要定义自己的构造函数。C++11规定
可用using语句继承基类构造函数。
但是只能初始化从基类继承的成员。
派生类新增成员可以通过类内初始值进行初始化。
语法形式:
using B::B;
所以如果派生类有自己新增的成员,且需要通过构造函数初始化,则派生类要自定义构造函数。拓展之using申明:
如果进行 private 或 protected 继承,则基类成员的访问级别在派生类中比在基类中更受限
class Base {
public:
std::size_t size() const {
return n;}
protected:
std::size_t n;
}
class Derived : private Base{
...};
在这一继承层次中, size 在 Base 中为 public ,但在 Derived 中为 private 。为了使 size 在 Derived 中成为 public ,可以在 Derived 的 public 部分增加一个 using 声明 。如下这样改变 Derived 的定义,可以使 size 成员能够被用户访问,并使 n 能够被从 Derived 派生的类访问: