问题描述
如上图所示:类 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
也构造。