C++ 中的继承和初始化列表

问题描述

class Triangle

如上图所示:类 Triangle 继承自类 Shape 但为什么初始化列表中写有 Shape() ,如果我省略它会发生什么?

解决方法

如果你不放置它,它仍然会调用默认的父类构造函数。但是,如果父构造函数具有关键字“显式”,或者如果没有默认的父构造函数因此您需要向其传递参数,则可能需要像这样明确地放置它..

,

您的派生 <div class="dropdown"> <button class="dropbtn">Dropdown</button> <div class="dropdown-content"> <a href="#">Link 1</a> <a href="#">Link 2</a> <a href="#">Link 3</a> </div> </div> 类如下所示:

Triangle

基类 class Triangle : public Shape { Point _x1,_x2,_x3; public: Triangle(const Point& x1,const Point& x2,const Point& x3) : Shape(),_x1(x1),_x2(x2),_x3(x3) {} }; 有自己的默认构造函数,它“做事”。那是什么并不重要,真的;您只想确保 Shape 的构造函数确实被调用,以便它可以在构造/初始化期间执行任何需要执行的操作。这可能是设置一些初始值,将一些调试信息记录到控制台,或者调用其自己父类的构造函数(如果有的话)。

因此,在构造 Shape 时,它需要明确告诉其基类 Triangle 也构造。