因为在构造Checking类之前,首先要构造基类(Savings)的。
如果你不指定,默认是Savings::Savings()
但是你没有声明这个函数。所以报错。
你声明的是带参数的Saving::Savings(string,double)
正因为找不到Saving类的默认构造函数,所以第二个和第二个都不行。
原因就是少了这个特别指定的构造函数:Savings(acntNo,balan)
如果把Saving类的声明改一下:
Savings(string acntNo="",double balan=0.0):acntNumber(acntNo),balance(balan){}
就是把string加一个默认参数,那么第二个和第三个就没错了。
因为实际上它还是要调用Savings::Savings(),
但这个时候Savings(string acntNo="",double balan=0.0) 声明默认参数了,所以参数省掉,仍然调用它
或者加一个函数:
Savings(){} 这样也可以调用这个了
第一种的错误不清楚,可能是C++的标准不一样或者是编译器实现不一样
不太了解