首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

为啥变量名不能和函数名同名

2012-10-14 
为什么变量名不能和函数名同名?double caclc calc()就是非法的;改成全局函数double caclc ::calc()

为什么变量名不能和函数名同名?
double caclc = calc();就是非法的;
改成全局函数double caclc = ::calc();就合法呢?
求详解,详解,谢谢大家

[解决办法]
函数名也可以单独使用,作为函数指针
如果变量和函数同名,那就相当于两个变量同名

此外,别写这种给自己找麻烦的代码
编译器是辅助你不是考验你,要为难编译器没问题,编译器完全可以用各种标准允许但你就是想不到的结果来回报你——最后是谁倒霉自己去想
[解决办法]
可以同名啊,哪里有讲过不能同名。。只不过会覆盖而已,函数属于全局作用域,同一作用域不能有两个同名变量,所以你与函数同名的变量不能是全局变量,但是可以是局部变量,局部变量会覆盖函数的定义,也就是在该局部变量作用域内你无法调用该函数
[解决办法]
如果允许的话,

C/C++ code
void abc() {};  // Avoid xyz() {};  // Btypedef void (*F)();void main(){    F xyz = abc;    xyz(); // 调用哪一个?  A 还是 B?}
[解决办法]
探讨
如果允许的话,


C/C++ code


void abc() {}; // A
void xyz() {}; // B

typedef void (*F)();

void main()
{
F xyz = abc;
xyz(); // 调用哪一个? A 还是 B?
}

[解决办法]
有些编译器会自动识别函数和变量,但是有些编译器只识别名字,所以同名会混淆
[解决办法]
这孩子,拿着地址往double里面放,呵呵呵

热点排行