可能重复:
非静态成员作为非静态成员函数的默认参数
如果我错了,请纠正我,但我认为默认参数的工作方式是这样的:
当编译器看到函数调用时,它开始将参数压入堆栈。当它用完参数时,它将开始将默认值压入堆栈,直到所有必需的参数都被填充(我知道这是一种简化,因为参数实际上是从右向左压入的,所以它将以默认值开始,但是想法是一样的)。
如果这是真的,为什么不能将成员变量用作默认值?在我看来,由于编译器像往常一样在调用站点推送它们,它应该能够很好地解决它们!
编辑由于答案似乎我的问题被误解了,让我澄清一下。我知道情况就是这样,我知道该语言允许什么和不允许什么。我的问题是为什么语言设计者选择不允许这样做,因为它似乎很自然地起作用。