• C plus 笔记(一 )


    传值函数:
    int Abc(int a, int b, int c){
    
        return a+b+b*c+(a+b-c)/(a+b)+4;
    
    }
    模板函数:
    template<class T> 
    T  Abc(T  a, T  b, T  c){
    	return a+b+b*c+(a+b-c)/(a+b)+4;
    }

    形式参数的用法会增加程序的运行开销

    类型T 的复制构造函数把相应的实际参数分别复制到形式参数a,b和c之中,以供函数使用;而在函数返回时,类型
    T的析构函数会被唤醒,以便释放形式参数a,b和c

      1: template<class T>
    
      2: T Abc(T& a, T& b, T& c){
    
      3:      return a+b+b*c+(a+b-c)/(a+b)+4;
    
      4: }

    引用参数(reference parameter)

    在函数被调用时,本程序并没有复制实际参数的值,在函数返回时也没有调用析构函数。

    常量引用参数

    常量引用(const reference),这种模式指出函数不得修改引用参数。

      1: template<class T>
    
      2: T Abc(const T& a, const T& b, const T& c)
    
      3: {
    
      4: return a+b+b*c+(a+b-c)/(a+b)+4;
    
      5: }

    使用关键字const 来指明函数不可以修改引用参数的值,这在软件工程方面具有重要的意。这将立即告诉用户该函数并不会修改实际参数。

    对于诸如i n t、float 和char 的简单数据类型,当函数不会修改实际参数值的时候我们可以采用传值参数;对于所有其他的数据类型(包括模板类型),当函数不会修改实际参数值的时候可以采用常量引用参数。

    template<class Ta, class Tb, class Tc >
    Ta Abc (const Ta& a, const Tb& b, const Tc& c)
    {
            return a+b+b*c+(a+b-c)/(a+b)+4;
    }
    递归函数(recursive function)是一个自己调用自己的函数
    累加求和
      1: template<class T>
    
      2: T Sum(T a[], int n){ 
    
      3:       / /计算a[0: n-1]的和
    
      4:     T tsum=0;
    
      5:     for (int i = 0; i < n; i++){
    
      6:            tsum += a[i];
    
      7:     }          
    
      8:     return tsum;
    
      9: }

    递归求和:

    template<class T>
    T Rsum(T a[], int n){ 
    	/ /计算a[0: n-1]的和
    	if (n > 0)
    		return Rsum(a, n-1) + a[n-1];
    	return 0;
    }

     

  • 相关阅读:
    业务领域建模Domain Modeling
    用例建模Use Case Modeling
    分析一套源代码的代码规范和风格并讨论如何改进优化代码
    结合工程实践选题调研分析同类软件产品
    如何提高程序员的键盘使用效率
    python知识准备及环境配置
    一张图片在Python操作下的4种玩法(附源码)
    Python中的错误和异常
    当你忘记网站上的密码时怎么办?Python如何快速帮你找回?
    Python最简单的图片爬虫,20行代码带你爬遍整个网站
  • 原文地址:https://www.cnblogs.com/buttonwood/p/2518608.html
Copyright © 2020-2023  润新知