1.值传递作为参数,加const构不构成重载
int te(const int a)
{
return a;
}
int te(int a)
{
return a;
}
int main()
{
int value = 1;
std::cout << te(value) << std::endl;
}
answer:
不构成,而且还会报重定义的错,因为这是值传递,value只是把值传进去了,并不是把自己传进去。
那么修改也是对a的修改,就是在te函数的作用空间的一个值(变量)。本来值传递就是不改变原来参数的。
2.指针、引用作为参数加const构不构成重载
int te(const int* a)
{
return *a;
}
int te(int* a)
{
return *a;
}
int main()
{
int a = 1;
std::cout << te(&a) << std::endl;
const int b = 2;
std::cout << te(&b) << std::endl;
}
answer:
构成,因为,这样传进去是一个真实有效的值,它把a或者b直接传到函数中,这个const是有效的,因为他会影响到底传进去的这个参数能不能被修改。
3.类里的成员函数加const构不构成重载
class MyClass
{
public:
int test()
{
return 1;
}
int test() const
{
return 1;
}
private:
int num = 0;
};
answer:
构成,因为,它是会影响它的成员变量到底能不能被修改,是有效的。
拓展
就返回值不一样,构不构成重载
int te()
{
return 1;
}
double te()
{
return 2.0;
}
answe:
不构成,会报重定义的错。为什么,看重载的定义:同名的函数根据函数的参数表(包括参数类型和数量)来决定是否重载。
根据这个定义,来理解值传递并没有什么变化,它的作用仅仅是拿到一个值。