zoukankan      html  css  js  c++  java
  • 名字查找先于类型检查:函数重载与作用域

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

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

  • 相关阅读:
    静静的看twittervision
    MSSQL中的随机函数
    紧张非封闭式开发中
    be my friend
    这个五一
    检讨
    SilverLight,有多少人关心呢?
    并查集模板题P3367 【模板】并查集
    并查集简单介绍
    约数之和模板题
  • 原文地址:https://www.cnblogs.com/xzxl/p/8638866.html
Copyright © 2011-2022 走看看