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);
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值