Asa*_*han 2 c++ constructor arguments default
我可以在这样的构造函数中使用默认参数吗?
Soldier(int entyID, int hlth = 100, int exp = 10, string nme) : entityID(entyID = globalID++), health(hlth), experience(exp), name(nme = SelectRandomName(exp))
{ }
我希望例如默认情况下exp = 10但是如果我在构造函数中提供它,则能够覆盖此值,否则它应该使用默认值.
我怎么能这样做,我知道我的方法不起作用....
如果我在初始化列表中提供任何值,无论我在构造函数中提供的是什么,另一方面,当我在构造函数中提供值时,覆盖了当然,为什么我每次提供值时都需要一个默认值对象启动...?
我应该使用不同的重载构造函数,还是人们有任何其他想法....?
默认参数只能提供给延伸到参数列表末尾的连续参数范围.简单来说,您可以为函数的1,2,3,... N 个参数提供默认参数.您无法在参数列表中间为参数提供默认参数,正如您在上面尝试的那样.重新排列参数(放置hlth和exp结束)或提供默认参数nme.
另外,构造函数初始化列表似乎没有任何意义.如果你在构造函数初始化列表中覆盖它们的值,那么传递entyID和nme从外部传递的点是什么?