• C++ 语句函数再探


    1. 表达式只计算,抛弃计算结果;

    2. 空语句什么也不做;

    3.switch case语句漏写break,将会从匹配到的情况开始执行,直到语句结束

    int main()
    {
       int i = 0;
       i + 100;     //表达式
       ;            //空语句
       while(cin >> i && i != 0)
       ;            //空语句
       switch(i){
           case 1:
           cout << "1" << endl;
           case 0:  //开始执行
           cout << "0" << endl;
           case 2:
           cout << "2" << endl; 
           default:
           cout << "3" << endl;//执行结束
       }
       return 0;
    }

    4. 形参、实参、局部变量、静态局部变量

    所谓形参就是占位之用,在函数开始时申请空间,并由传入实参进行实例化(也可称拷贝构造)。一般是局部的,即只能在函数体内可见。

    实参用来实例化/初始化形参

    局部变量的作用域是函数体或者语句内部,但是加上static修饰就变成了静态局部变量,它作用域还是该函数体,但生命期延长到了程序终止。

    int countCalls(int a, int b)
    {
        static int calls = 0;//静态局部变量
        return ++calls;
    }
    
    int main()
    {
        for(int i=0; i<5; i++)
            cout << countCalls(1, 2) << endl;
        //cout << calls << endl;//无法访问
        return 0;
    }

    5. 函数返回值,还是发生了拷贝,即用函数体内的某变量初始化函数调用点的某临时量。

    6. 不要返回局部变量的引用或指针,返回后就销毁了,没地儿去找了。

    7. 引用返回左值,其他类型返回的是右值。

    8. 内联函数适用于优化规模较小、流程直接、频繁调用的函数。

    9. 有趣的返回错误信息的宏(静态变量)

    void trouble(int m)
    {
        if(m == 0)
        {
            cout << "Error : " << __FILE__;
            cout << " in function  " << __func__;
            cout << " at line " << __LINE__;
            cout << " complie on " << __DATE__;
            cout << " at " << __TIME__;
        }
    }

    10.函数重载二义性

    (1)无参函数VS有参有默认值,歧义

    int get(){
        return a;
    }
    int get(int a = 5){
        return a;
    }
    //调用get()

    (2)传值VS传引用,歧义

    int get(int a){
        return a;
    }
    int get(int &a){
        return a;
    }
    //int m = 10;
    //调用get(m)

    (3)参数存在隐式类型转换,歧义

    int get(int m){
        return m;
    }
    
    long get(long m){
        return m;
    } 
    //double m = 10.123
    //调用get(m)

    参考资料

    【1】https://blog.csdn.net/chenxiaohua/article/details/2128899 (有点问题)

    【2】https://blog.csdn.net/loving_forever_/article/details/51472127 (有点问题)

  • 相关阅读:
    sql 日期格式化 比较全面
    SQL Server 2005 中的树形数据处理示例1
    Web网站的性能测试工具
    js实现时分秒
    sql查询远程数据库的表的数据并填充到本地数据库的表
    Windows 2003操作系统十四招加速大法
    window2003 server的一些优化设置_windows 2003
    解决html向aspx页面传值汉字乱码问题
    js快捷键大全 http://www.zhangxinxu.com/wordpress/?p=1667
    iis 重启命令
  • 原文地址:https://www.cnblogs.com/yocichen/p/11108670.html
Copyright © 2020-2023  润新知