为什么类的构造函数不能被继承?

原因之一是其他函数都可以通过类对象来调用,但是构造函数是用来产生对象的函数,它在对象之前。而继承对对象来说是能够调用父类的函数,但是对象都不存在你还调用什么父类的构造函数?所以构造函数无法继承。

C++ Primer Plus说析构函数和COPY赋值操作符是不能被继承的,为了验证这一结论,我决定做一个实验。一个函数能否被继承可以通过能够通过子类对象来调用判断,如果能,说明该函数能被继承,否则,不能被继承。

为什么类的构造函数不能被继承?_第1张图片

上图中子类什么都没有,父类中有构造函数、COPY构造函数、COPY赋值操作符和析构函数,看下面的程序。


为什么类的构造函数不能被继承?_第2张图片
为什么类的构造函数不能被继承?_第3张图片

从这个运行结果可以看出,父类的析构函数和COPY构造函数无法调用,而那个COPY赋值操作符的实参是base类型,因而那是父类的COPY赋值操作符。从结果可知,同样无法调用成功。

所以可知书上的结论是正确的。

你可能感兴趣的:(为什么类的构造函数不能被继承?)