【发布时间】:2010-12-10 16:31:51
【问题描述】:
我可以在这样的构造函数中使用默认参数吗
Soldier(int entyID, int hlth = 100, int exp = 10, string nme) : entityID(entyID = globalID++), health(hlth), experience(exp), name(nme = SelectRandomName(exp))
{ }
例如,我希望默认为 exp = 10,但如果我在构造函数中提供该值,则可以覆盖此值,否则应使用默认值。
我该怎么做,我知道我的方法行不通....
如果我在初始化列表中提供任何值,无论我在构造函数中提供什么,都会被覆盖,另一方面,每当我在构造函数中提供一个值时,为什么我每次都需要一个默认值为对象启动提供值...?
我应该使用不同的重载构造函数还是你们有其他想法......?
【问题讨论】:
-
是的,你应该使用重载的构造函数。
-
您的构造函数定义将无法编译,而您的帖子似乎描述了运行时行为。这意味着您很可能发布了一个虚假的构造函数定义。请张贴真实的。
-
如果你的构造函数有可能只用一个参数调用,它应该是
explicit。
标签: c++ constructor default arguments