返回信息流第二次发帖,昨天的“const_cast强制转换”、常量折叠什么的懵懵懂懂的,不过没关系~
今天的问题先看程序:
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
double x = 4.00;
cout << sqrt(x) << endl;
}
// 重新定义sqrt函数
double sqrt(double x)
{
return x+1;
}
最后的输出,差不多可以猜到。是5(为什么不是5.00呢?)
问题在于sqrt是库函数(头文件cmath),然后我重新定义了sqrt函数,但是没有声明!程序可以正常运行,也就是说,cmath头文件已经帮我声明了,只不过最终调用的是自己定义的函数。
c++ primer plus里面说:
如果定义了一个与库函数同名的函数,编译器将使用程序员定义的版本,而不是库函数。
问题(1)请问我以上的解释对吗?就是关于函数声明和定义方面的,库函数帮我声明,然后调用我自己定义的函数。
问题(2)函数可以重复声明吗?这里特指库函数和自己定义的函数重复。程序如下,只不过加了一句声明,依然可以顺利运行。
#include<iostream>
#include<cmath>
using namespace std;
double sqrt(double x);
int main()
{
double x = 4.00;
cout << sqrt(x) << endl;
}
double sqrt(double x)
{
return x+1;
}
只不过感觉有点好玩。。。大家不要介意。。。
这是一条镜像帖。来源:北邮人论坛 / cpp / #83977同步于 2014/11/7
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
[讨论]挺好玩的,关于函数声明与函数调用
superbupt
2014/11/7镜像同步3 回复
订阅后,新回复会通过你的通知中心匿名送达。