首页 > 其他 > 详细

名字查找先于类型检查:函数重载与作用域

时间:2018-03-24 14:46:57      阅读:256      评论:0      收藏:0      [点我收藏+]

作用域屏蔽名字:内层作用域中声明的名字将隐藏外层作用域中声明的同名实体

同名??C++有关同名的除了变量之外,也就是函数重载了!!

 

【作用域对于函数重载的限制】

1. 在不同的作用域中无法重载函数名

2. 函数匹配时,编译器首先寻找对该函数名的声明,一旦在当前作用域中找到了所需的名字,编译器就会忽略掉外层作用域中的同名实体,剩下的工作就是检查函数调用是否有效了

#include <iostream>

using namespace std;

void print(double);
void print(string);

int main()
{
	int a = 10;
	double d = 3.14;
	string s = "hello";
	void print(int);	// 隐藏外面作用域的print 
	print(a);
	print(d);		// 调用的是print(int),输出3 
//	print(s);		// 错误:print(string)被隐藏掉了 
	return 0;
}

void print(int x)
{
	cout << x << endl;
}

void print(double x)
{
	cout << x << endl;
}

void print(string x)
{
	cout << x << endl;
}

小结:在C++中,名字查找发生在类型检查之前

名字查找先于类型检查:函数重载与作用域

原文:https://www.cnblogs.com/xzxl/p/8638866.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!