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

  • 相关阅读:
    echarts动态设置主体颜色
    spring security session
    Spark RDD函数:
    MapReduce TOP n
    feign 使用示例
    trie树
    动态修改注解(annotation)值
    golang插件
    Kafka Streams Example
    tcp并发(c18w)
  • 原文地址:https://www.cnblogs.com/xzxl/p/8638866.html
Copyright © 2011-2022 走看看