C++函数重载的几个问题

来源:互联网 发布:js设置input字体颜色 编辑:程序博客网 时间:2024/05/21 03:16

第一个问题,作用域

C++中已知有函数重载,但是在某个scope内重新声明某个函数时,会覆盖掉原先的函数声明,例如

void f(int i){    cout << "int"<<endl;}void f(char c){    cout << "char"<<endl;}int main(){   void f(int i);    f('a');    return 0;}
输出将会是int

第二个问题,const

const会区分底层const,而不会区分顶层const

例如:

void f(char * c){    cout << "char"<<endl;}void f(char * const c){    cout << "const char"<<endl;}
这是重定义的

然而如下代码可以正确运行

void f(char * c){    cout << "char"<<endl;}void f(const  char * c){    cout << "const char"<<endl;}

函数会根据指针指向的区域是否只读来区分两个函数

f("1234");//输出为const char

char a[4]{"123"};

f(a);//输出为char



0 0
原创粉丝点击