Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/131.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
默认参数的静态绑定 在有效C++中,书中只提到了一个句子为什么默认参数是静态绑定的:_C++ - Fatal编程技术网

默认参数的静态绑定 在有效C++中,书中只提到了一个句子为什么默认参数是静态绑定的:

默认参数的静态绑定 在有效C++中,书中只提到了一个句子为什么默认参数是静态绑定的:,c++,C++,如果默认参数值是动态绑定的,那么编译器必须找到一种方法,在运行时为虚拟函数的参数确定适当的默认值,这将比当前在编译期间确定它们的机制更慢、更复杂 有人能再详细一点吗?为什么它既复杂又低效 非常感谢 因为对于函数调用,需要使用与对象实例关联的vtables查找实际调用,并且需要以某种方式推断出结果。这意味着ctable需要扩展,或者需要额外的管理才能将默认值链接到vtable条目。每当类具有虚拟函数时,编译器都会生成一个所谓的v-table来计算运行时支持动态绑定和多态行为所需的正确地址。许多类优

如果默认参数值是动态绑定的,那么编译器必须找到一种方法,在运行时为虚拟函数的参数确定适当的默认值,这将比当前在编译期间确定它们的机制更慢、更复杂

有人能再详细一点吗?为什么它既复杂又低效


非常感谢

因为对于函数调用,需要使用与对象实例关联的vtables查找实际调用,并且需要以某种方式推断出结果。这意味着ctable需要扩展,或者需要额外的管理才能将默认值链接到vtable条目。

每当类具有虚拟函数时,编译器都会生成一个所谓的v-table来计算运行时支持动态绑定和多态行为所需的正确地址。许多类优化器正是出于这个原因,致力于删除虚拟函数。开销更小,代码更小。如果将默认参数也计算到方程中,则会使整个虚拟功能机构更加繁琐和臃肿