栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++函数学习笔记(三)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++函数学习笔记(三)

函数重载

如果同一作用域内的几个函数名字相同但是形参列表不同。

  • 重载函数在函数的形参的数量或形参的类型有所不同。

main 函数不能重载。
不允许两个函数返回类型外其他所有的要素都相同。

重载和const形参
  • 一个拥有顶层const的形参无法和另一个没有顶层const的形参区分开来。
const_cast 和重载

去const操作。

建议

最好值重载那些确实非常相似的操作。有些情况给函数起不同的名字能使程序更加容易理解。

函数匹配(也叫重载确定)
  • 编译器找到一个与实参最佳匹配的函数,并生成调用该函数代码
  • 找不到任何一个函数与调用的实参匹配,此时编译器发出无匹配的错误
  • 有多于一个函数可以匹配,但是每一个都不是明显的最佳选择。此时也将发生错误,称为二义性调用。
重载和作用域

C++语言名字查找发生在类型检查之前。

  • 在不同的作用域当中无法重载函数名。
  • 如果我们呢在内层作用域当中声明名字,它将隐藏外层作用域声明的同名实体。

string read()
void print(const string &)
void print(double);
void fooBar(int val)
{
bool read = false;
string s= read(); // 错误:read是一个布尔值,而分函数
void print(int);
print(“Value”); // 错误: print(const string &) 被隐藏掉。
print(ival);// 调用 print(int)
print(3.14); // 调用 print(int)
}

  • 如果将print(int) 和其他print函数声明在同一个作用域中.则它将成为另一中形式重载。

void print(const string &)
void print(double);
void print(int);
void fooBar(int val)
{
print(“Value”); // 调用 print(const string &)
print(ival);// 调用 print(int)
print(3.14); // 调用print(double);
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/385012.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号