请问
classB:private A
{
public:
B(int p1):A(p1)这一排“:”的意思,作用是什么
}
B(int p1):A(p1)
你可以理解为
B(int p1)
{
base.A(p1)
}
但是因为A是构造函数,不可以直接这样调用
其实作用就是把B构造函数里传入的值传递给A的构造函数
如果不传,那么父类会默认走无参的构造函数,而不会走对应的有参构造函数
-=-=-=-
举个例子说明这是干啥用的
比如你有一个父类Person
下面有三个子类,教师,学生,工人
每个人都有名字,那么名字当然应该定义在父类中,而不是在每个子类中都定义一遍
那么为了不要忘记给名字赋值,应该在new的时候就传入名字而不是new之后在外面传入,也就是应该有一个带参数的构造函数用来传递名字
那么好了,既然名字存在父类里,那么把构造函数里的名字存到父类属性的这个操作也应该是父类的构造函数来完成,而不是每个子类的构造函数都执行一遍
可是如果你的子类在实例化的时候不把参数继续向上传递,那么父类其实走的是无参的构造函数,也就是传入的名字被丢弃了
所以你大概了解了这个是干什么用的了吧
因为b是继承a的。所以这种写法应该就是将值继承过来。不过如果p1是public。则可以直接引用