C++中模棱两可的错误

本文探讨了C++中遇到的模棱两可错误,特别是在面向对象和函数重载方面。通过举例说明了由于类型转换导致的编译错误,并提出了解决方案,包括使用模板和确保函数参数的差异性。建议在涉及浮点数的函数设计时使用double类型以避免精度问题。
摘要由CSDN通过智能技术生成

description: 最近看了好多C++的书籍,头都大了,感触比较深的是很多东西还是吃不透,自己在面向对象这块的积累还不够深,读起来比较吃力。后面准备多动手,每天从一些小的细节着手,慢慢修真自己一些不良的编程习惯。

最近看了好多C++的书籍,头都大了,感触比较深的是很多东西还是吃不透,自己在面向对象这块的积累还不够深,读起来比较吃力。后面准备多动手,每天从一些小的细节着手,慢慢修真自己一些不良的编程习惯。之前因为在公司比较忙,也没什么时间对自己学过的shell编程等知识点进行总结,这段时间也可以抽空做一下。

C++中的模棱两可相信大家也经常遇到,当然很多时候往往是在调试错误的时候才发现原来陷阱是因为自己的模棱两可造成的。看下面的代码:

#include <iostream>

void func(int var)
{}

void func(float var)
{}

using namespace std;
int main(int argc, char *argv[]) {
    func(2.5);
}

有一定经验的程序员肯定能猜到编译结果(call to ‘func’ is ambiguous),因为2.5在C++中默认存储的数据类型是double,而重载的函数参数是int和float,double可以转换为int和float,就会出现模棱两可的错误。如果代码修改为:

#include <iostream>

void func(int var)
{}

void func(double var)
{}

using namespace std;
int main(int argc, char *argv[]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值