构造函数中的默认参数

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但是如果我在构造函数中提供它,则能够覆盖此值,否则它应该使用默认值.

我怎么能这样做,我知道我的方法不起作用....

如果我在初始化列表中提供任何值,无论我在构造函数中提供的是什么,另一方面,当我在构造函数中提供值时,覆盖了当然,为什么我每次提供值时都需要一个默认值对象启动...?

我应该使用不同的重载构造函数,还是人们有任何其他想法....?

AnT*_*AnT 8

默认参数只能提供给延伸到参数列表末尾的连续参数范围.简单来说,您可以为函数的1,2,3,... N 参数提供默认参数.您无法在参数列表中间为参数提供默认参数,正如您在上面尝试的那样.重新排列参数(放置hlthexp结束)或提供默认参数nme.

另外,构造函数初始化列表似乎没有任何意义.如果你在构造函数初始化列表中覆盖它们的值,那么传递entyIDnme从外部传递的点是什么?