|
|
1
5
默认参数是在调用方的上下文(这就是为什么它们通常被称为“参数”,而不是“参数”)中计算的,而不是在类方法的上下文中。这意味着为了计算这些非静态参数,编译器需要知道从中获取这些默认值的特定类实例。 当然,理论上可以允许使用非静态成员作为默认参数,并使编译器使用在成员调用中指定的类实例。但这听起来不像是“C++方式”对我做的事情。此外,在一些更复杂的情况下,例如,当方法是虚拟的时,它可能会导致相当复杂和不雅的规范。 |
|
|
2
1
非静态成员绑定到对象,需要“this”指针才能访问该对象。由于此指针不可用于默认值,因此不允许使用 |
|
|
3
0
在我的头上,允许调用的类实例中的默认参数,将需要在调用前“取消”成员值,因为函数参数在
其次,对该方法的每次调用都会有一个很小的开销,使用默认值会产生以下影响:
这些都是相当含糊的反驳,我也不明白为什么不能这样做。 |
|
|
4
0
如果我理解您的问题,那是因为编译器知道您正在初始化这个方法变量的非静态变量是否存在——因此要求它是静态的,所以当方法变量初始化时,它保证存在。这不是要查的。 |