【发布时间】:2015-02-13 03:27:35
【问题描述】:
案例 1: 您可以重载两个函数,即:
void foo(int *);
void foo(const int *);
在 , 案例2: 你不能重载两个函数:
void foo(int);
void foo(const int);
我已经对这个概念进行了编码和检查,但无法找出导致这种重载变化的原因。
【问题讨论】:
-
const int作为参数本质上是多余的,因为参数是按值传递的。与int *不同,您对被调用函数中的int所做的任何操作都不会影响其在调用者中的值。 -
@Carey:
const在某种意义上总是多余的,如果const的所有实例都被删除,程序将照常工作。const的目的是作为对哪些值可以更改的已知约束。这对程序员的形式参数和纯局部变量一样有帮助,所以你的参数没有意义。 -
@CareyGregory;好吧,除了命名为原始
const值之外,这些名称不会像例如如果const被删除,则数组大小。但你明白了。当时和现在的区别:我喝了一杯咖啡。 :)
标签: c++ function oop overloading