您好,欢迎来到[编程问答]网站首页   源码下载   电子书籍   软件下载   专题
当前位置:首页 >> 编程问答 >> C/C++ >> const修饰形参可导致重载否?

const修饰形参可导致重载否?

来源:网络整理     时间:2016/7/5 12:58:15     关键词:

关于网友提出的“ const修饰形参可导致重载否?”问题疑问,本网通过在网上对“ const修饰形参可导致重载否?”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题: const修饰形参可导致重载否?
描述:

void chl(int x );
void chl(const int x );
void chl(int x  ){ }
void chl(const int x ){ }
 error C2084: 函数“void chl(int)”已有主体
void chl(int* x );
void chl(const int* x );
void chl(int* x  ){ }
void chl(const int* x ){ }可以


解决方案1:

不可以,编译器重载的时候不考虑最外层const修饰符
注:int*对应的const版本是int*const。int*和const int*是可以重载的

解决方案2:


对于参数上面说的很清楚了
const一般的作为返回是可以的,还有函数后面的补充也是可以的

解决方案3:

void chl(int x){}
//void chl(const int x){}   //重定义
void chl(int* x){ }         //重载
void chl(const int* x){ }   //重载
//void chl(int* const x){}  //重定义
void chl(int &x){}          //重载
void chl(const int& x){}    //重载

当然,你不能同时把上面的函数都定义上,那样调用的时候会二义的,但这跟重载已经无关了。 解决方案4:

对于值传递的,由于函数里无法改变形参,加不加const没意义,也就不能形成重载。
但对于引用和指针就不一样了,加不加const是不一样的意思,可以导致重载。
注意指针是指指向目标const,不是指针本身const。指针本身const,还是值传递,也不能重载。

解决方案5:

const修饰形参是可以做重载的,但对于值传递的不行。


以上介绍了“ const修饰形参可导致重载否?”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/2297913.html

相关图片

相关文章