zoukankan      html  css  js  c++  java
  • 练习6.12、6.13、6.14、6.15

    6.12:改写6.2.1节中的练习6.10的程序,使用引用而非指针交换两个整数的值。你觉得哪种方法更容易使用呢?为什么?

    Ans:我觉得使用引用类型作为函数形参更好使用,因为引用形参在实参初始化它的时候就与实参绑定在一起了,所以在函数中对引用进行交换,实际上就是对实参进行交换,而使用指针的话,由于是通过值传递的,所以将实参的地址拷贝一份给形参作为指针的值,两者之间就是独立的,并且涉及到地址,如果对指针的值进行交换,结果不会影响到实参,但是如果是对指针指向的对象的值进行修改,还是会改变实参的值。

    6.13:假设T是某种类型的名字,说明以下两个函数声明的区别:一个是void f (T),另一个是void f (T&)。

    Ans:前者函数声明形参与实参之间是通过值传递的,通过拷贝的形式对形参进行初始化,而后者函数声明形参是引用类型,与实参之间是引用传递,形参与实参之间是绑定的。

    6.14:举一个形参应该是引用的例子,在举一个形参不能是引用类型的例子。

    Ans:当函数中形参参与的操作,需要对实参有影响时,形参应该是引用类型。当函数中形参参与的操作不会对实参有影响时,不能是引用类型。

    6.15:说明find_char函数中的三个形参为什么是现在的类型,特别说明为什么s是常量引用而occurs是普通引用?为什么s和occurs是引用类型而c不是?如果令s是普通引用会发生什么情况?如果令occurs是常量引用会发生什么情况?

    Ans:s是常量引用是因为s在函数中不需要修改其值,故应该是常量引用,而为什么它是引用类型,是因为它是string类型,为了避免拷贝过长的字符串

    occurs是普通引用是因为它的值在函数中会改变,并且它之所以是引用,是要与实参绑定,返回时携带信息返回。如果它是常量引用,那么它编译会出错。

    c不是引用类型,在该函数中c是不是引用其实都可以,但是由于c所占的字节很少,可以使用拷贝的方式初始化形参,还有由于不需要操作实参的值,所以不需要引用类型。s也可以是普通引用,只不过程序安全性降低。

  • 相关阅读:
    类型-String:二进制安全
    影视-纪录片:《魅力柬埔寨》
    植物:探矿植物
    植物-探矿植物:铜草
    扩展名:cs
    扩展名:snk
    Code-Helper:OracleHelper.cs
    Code-Helper:SqlHelper.cs
    Linux: FTP服务原理及vsfptd的安装、配置
    Linux下/etc/fstab文件详解
  • 原文地址:https://www.cnblogs.com/Dark-King/p/9475828.html
Copyright © 2011-2022 走看看