zoukankan      html  css  js  c++  java
  • 使用引用形参返回额外信息

    一个函数只能返回一个值,但是呢,有时候函数需要同时返回多个值,引用形参为我们一次返回多个结果提供了有效的途径:

    来一个例子,直接上代码:

    先说明函数功能:一个函数,返回string对象中的某个字符第一次出现的位置,同时得知该字符总共在string对象中出现的次数,函数中有详细说明。

    #include<iostream>
    #include<string>
    using namespace std;
    
    string::size_type FindChar(const string &s, char c, string::size_type &count)
    {
    	auto ret = s.size();  //字符串总长,来控制循环,同时初始化初始化ret
    	count = 0;
    	for (decltype(ret) i = 0; i != s.size(); ++i)  //decltype获取ret的类型
    	{
    		if (s[i] == c)
    		{
    			if (ret == s.size())  //巧妙使用ret == s.size() 去控制字符C第一次出现,以后都不在统计
    				ret = i;
    			++count;   //上边if只是第一次进去一次,之后都不在进 以后遇到C都只加count
    		}
    	}
    	return ret;
    }
    
    void Test()
    {
    	string s1("lilililililililililili");
    	
    	string::size_type Count = 0;;
    	auto index = FindChar(s1,'l',Count);
    	cout << "第一次出现的位置:" << index << endl;
    	cout << "Count = " << Count << endl;
    }
    
    int main()
    {
    	Test();
    	return 0;
    }
    表面看似只完成一个任务:即返回了string对象中某个字符出现的第一个位置,但是由于我们用来统计次数的变量时一个引用形参,在函数外可以直接访问,引用形参不会因为出函数作用域而消失;


    来自:C++Primer;


  • 相关阅读:
    C语言的存储类别和动态内存分配
    C语言中复杂的声明
    C语言中typedef的解释_2
    C语言中类型限定符
    C语言文件I/O和标准I/O函数
    C语言中存储类别、链接与内存管理
    C++中static与const成员
    C++多态、虚函数、纯虚函数、抽象类
    sizeof结构体
    杂类
  • 原文地址:https://www.cnblogs.com/melons/p/5791861.html
Copyright © 2011-2022 走看看