• c++下引用类型的入门教程

    普通类
    • 支持
    • 批判
    • 提问
    • 解释
    • 补充
    • 删除
    • c++下引用类型的入门教程

    引用类型也称别名它是个很有趣的东西在c++ 下你可以把它看作是另外的一种指针,通过引用类型我们同样也可以间接的操作对象,引用类型主要是别用在函数的形式参数上,通常我们使用它是把类对象传递给一个函数。

    引用对象采用类型名加上&符号和名称的方式进行定义例如:(int &test;),这里我们就定义了一个int类型的一个名为test 的引用,但是int &test;这样的方式是不能够被编译成功的,以为引用的定义必须同时给应用进行赋值操作,这里的赋值并不是说把变量的值传递给引用,而是把引用指向变量,写成这样就对了:(int &test=变量名;)。

    示例代码如下:

     C++ 代码
    //程序作者:管宁
    //站点:www.cndev-lab.com
    //所有稿件均有版权,如要转载,请务必著名出处和作者

    #include <iostream>
    using namespace std;

    void main(void)
    {

    int a=10;
    int &test=a;
    test=test+2;

    cout << &a << "|" << &test << "|" << a << "|" <<test << endl;

    cin.get();
    }




    观察并编译运行上面的代码你会发现&a和&test的地址显示是相同的,a和test的值显示也是一样的!

     

     

    结合前一个教程的内容我们来说一下const引用的相关内容,这里要特别注意,和前一个教程一样带const修饰的引用同样也容易混淆概念!

    const修饰如果用在引用上会有一个特别之处,它的奥妙就在于可以进行不同类型的对象的初始化,而这一切在普通变量操作上是不可能的下面我们来看一个例子:


     C++ 代码
    //程序作者:管宁
    //站点:www.cndev-lab.com
    //所有稿件均有版权,如要转载,请务必著名出处和作者

    #include <iostream>
    using namespace std;

    void main(void)
    {

    int a=10;
    //double &test = a + 1.2f; //这句就是错误的!
    const double &test = a + 1.2f;

    cout << &a << "|" << &test << "|" << a << "|" <<test << endl;

    cin.get();
    }




    上面的代码足够说明问题了,这就是const修饰带来的好处,但是聪明的人会在输出的时候发现一个问题,就是a和test的值的输出不同,按照最先说的道理应该可以改变a的值呀,为什么在这里却有没有能够改变呢?

    道理是这样的,const修饰过后的引用在编译器内部是这样进行变化的。

     C++ 代码 int a=10;
    const double &test = a + 1.2f;




    这样的一段代码在编译器认为却是下面的方式进行的

     C++ 代码 int a=10;
    int temp = a;
    const double &test = temp + 12.f




    这里其实是把a的值赋给了一个临时temp 变量,而后test获得的却是temp+12.f 改变的是temp而不是a,所以就出现了a和test显示的值不同的情况,这里要特别注意,这是一个很容易混淆的地方,在编写程序的时候要特别仔细,以免出现了问题却检查不出为什么!

    

    • 标签:
    • 进行
    • c++
    • test
    • const
    • 代码
    • 引用
    • 修饰
    • 入门教程
    • 变量
    • int
    • 类型
  • 加入的知识群:
    学习元评论 (0条)

    评论为空
    聪明如你,不妨在这 发表你的看法与心得 ~



    登录之后可以发表学习元评论
      
暂无内容~~
顶部