《C++ Primer》读书笔记-第六章 04 函数重载

作者:马志峰
链接:https://zhuanlan.zhihu.com/p/23820281
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

声明:

  • 文中内容收集整理自《C++ Primer 中文版 (第5版)》,版权归原书所有。
  • 原书有更加详细、精彩的释义,请大家购买正版书籍进行学习。
  • 本文仅作学习交流使用,禁止任何形式的转载
  • 同一个作用域内
  • 函数名相同
  • 形参列表不同

其中形参列表不同是指

  • 形参数量不同
  • 或数量相同但形参类型不同

注意:

  • 类型别名不构成重载
  • 顶层const不构成重载

MZF: 我们不应该追求语法而强用重载,函数名还是要尽量保证见名知义的好

const_cast和重载

如果函数的形参和返回值等是底层const,我们可以利用const_cast和重载创建出函数的非const版本

在写重载函数时注意修改形参的const,否则无法构成重载

const string &Test( const string &s1 )  
{  
    return s1;  
}
string &Test( string &s1 )  
{  
    auto &sResult = Test( const_cast<const string&>( s1 ) );  
    return const_cast<string &>( sResult );  
}

这里可能不太明显,如果Test的实现很长的时候,这种技巧的优势就明显了。

重载与作用域

仅在同一作用域内才会构成重载

内层作用域中声明的函数将隐藏外层作用域中声明的同名实体(和变量没什么区别)

猜你喜欢

转载自blog.csdn.net/qq_26751117/article/details/53261921
今日推荐