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

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

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

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


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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容