• 20170518


    一、c++的引用 reference
        1.1 概念:引用是另外一个变量的别名
        1.2 值传递 和 引用传递
        myswap1(int x, int y);//值传递
        myswap2(int *x, int *y);//地址传递,本质上是值传递,传递的是地址值
        myswap3(int &x, int &y);//引用传递
        1.3 引用的定义
        引用必须初始化
        类型 &引用名 = 变量名;
        引用一旦初始化,则终生为这个变量服务
        int &引用名 = 1000;//错误
        const int &引用名 = 1000; //正确
        1.4 引用的实现
        引用是用指针实现的
        int i = 100;
        const int *pi = &i;
        *pi = 200;
        1.5 引用的应用
        1.5.1函数的返回值如果是引用,则把函数的返回值作为左值

        int getmax(int x, int y);
        getmax(x, y) = 123; //错误,基本类型返回结果为只读
        
        1 #include <iostream>
        2 using namespace std;
        3 /*
        4         int getmax(int x, int y) {
        5         return x > y ? x : y;
        6     }
        7 */
        8 int &getmax(int& x, int& y) {
        9     return x > y ? x : y;
        10 }
        11 int main() {
        12     int x = 10, y = 123;
        13     int var_res = getmax(x, y);
        14     cout << var_res << endl;
        15     getmax(x, y) = 456;
        16     cout << x << "," << y << endl;
        17     //getmax(x, y) = 456;错误,基本类型返回值为只读,不能左值
        18
        19 }
        引用类型作为返回值类型时,引用的变量必须保证在函数调用完成后,生命期依然存在,不能返回局部变量的引用,可以返回堆 全局 静态 成员变量的引用
        1.5.2 引用类型作为函数参数
        减少数据的拷贝
        可以在函数内部修改函数外部的数据
        
        注意 引用类型的参数如果没有const代表不能接收常量和const修饰的变量
             如果一个引用类型参数加了const修饰代表不能在函数内部修改数据,可以传常量和const修饰的变量
        1.6 引用和指针的联系和区别
        
     二、c++中的类型转换(四种)
        1. static_cast<类型>(变量)
        在某一方向上,可以做隐式类型转换
        2. dynamic_cast<类型>(变量)
        动态类型转换,适合具有虚函数的父子类之间的指针或引用
        3. const_cast<类型>(变量)
        去掉const修饰
        const int data = 200;
    -------------------------------------------------------------------------
        1 #include <iostream>
        2 using namespace std;
        3 int main() {
        4     volatile const int data = 200; //如果没有volatile一遇到const那么就输出原来的内容,例如本例子中,如果没有volatile那么最后输出data的值为200,加了volatile,值为9527
        5     int *pdata = const_cast<int *>(&data);
        6     *pdata = 9527;
        7     cout << data << endl;
        8
        9 }
        
        4. 重新解释的类型转换,最接近c的强制类型转换
        reinterpret_cast<类型>(变量);
      

  • 相关阅读:
    Nginx 配置指令location 匹配符优先级和安全问题【转】
    服务器压力测试 ab
    Linux 下绑定域名与IP地址
    nginx 均衡负载配置
    Centos下搭建ftp服务器
    php开发环境搭建
    史上最全Vim快捷键键位图(入门到进阶)
    Linux vi/vim
    CentOS用户权限管理--su与sudo
    Linux基础知识-文件管理
  • 原文地址:https://www.cnblogs.com/dongjian16/p/6873972.html
Copyright © 2020-2023  润新知