文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>C++函数调用何时用引用类型

C++函数调用何时用引用类型

时间:2011-05-27  来源:Crazyant_

非引用形参通过用实参的副本初始化形参,修改形参的值,不会影响实参的值,然而复制实参并不是在所有的情况下都适合,不适宜复制实参的情况包括:

l 当需要在函数中修改实参的值时

l 当需要以大型对象作为实参传递时。对实际的应用而言,复制对象所付出的时间和存储空间代价往往过大

l 当没有办法实现实参的复制时。

对第一种情况很常见,而第二种情况,则是为了性能必须要考虑进去的,比如下面的一段程序,就把形参用成了引用类型,是因为我这个程序是要把ifstream的内容复制到vector中,然而ifstream读入的是一个很大的文件,可能有10MB那么大,当然最后生成的vector也会有10MB的大小,如果采用传统的用拷贝参数传递ifstream,然后用一个临时的vector保存内容,最后再返回vector的副本时,可见浪费了很多的时间,和空间。

当然本程序不想修改实参ifstream的值,这时候,把形参声明称const的类型即可,它是可以接受非const的实参的

 //函数作用,将ifstream的内容放到vector里面,其中hasOtherValue表示是否一行中,除了原词,还有词频和词性

void ifsreamToVector(ifstream & fin,vector<string> &v,bool hasOtherValue=true){
    v.clear();
    string str;//存放词语

    if(hasOtherValue){
        //说明一行中,除了原词,还有词频和词性
        int itmp;//存放词频
        string stmp;//存放词性    
        while(fin>>str>>itmp>>stmp){
            v.push_back(str);
        }
    } else {
        while(fin>>str){
            v.push_back(str);
        }
    }
}
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载