码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2018-03-24 14:56:00      阅读:135      评论:0      收藏:0      [点我收藏+]

标签:include   string   out   ble   class   限制   gpo   strong   作用   

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

同名??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++中,名字查找发生在类型检查之前

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

标签:include   string   out   ble   class   限制   gpo   strong   作用   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!