zoukankan      html  css  js  c++  java
  • 回顾:C++开篇课堂

    周三,在刚刚结束矩阵分析的考试之后,面向对象程序设计课正式开始了C++的学习,这次课的重点即是面向对象思想的理解。
    梳理一下知识点。

    C++中函数的默认参数

    在函数声明或者在函数定义时,对参数赋初始值,就是函数的默认参数。

    例一: 在函数声明时设置参数的值

    #include <cstdio>
    #include <iostream>
    #include <stdlib.h>
    using namespace std;
    
    //在函数声明时设置参数的值 
    double calculate(double r = 1,double pi = 3.14); 
    
    int main()
    {
    	cout << calculate() << endl;
    }
    
    double calculate(double r,double pi)
    {
    	return r*r*pi;
    }
    

    结果:

    例二: 在函数定义时设置(错误)

    #include <cstdio>
    #include <iostream>
    #include <stdlib.h>
    using namespace std;
    
    double calculate(double r,double pi); 
    
    int main()
    {
    	cout << calculate() << endl;
    }
    
    double calculate(double r = 1,double pi = 3.14) //在定义函数时设置
    {
    	return r*r*pi;
    }
    

    结果:编译错误

    不过试了下这样子就可以了:

    #include <cstdio>
    #include <iostream>
    #include <stdlib.h>
    using namespace std;
    
    //double calculate(double r,double pi); 注释掉声明
    double calculate(double r = 1,double pi = 3.14)
    {
    	return r*r*pi;
    }
    
    int main()
    {
    	cout << calculate() << endl;
    }
    

    其实本质上还是在函数声明的时候设置默认参数。

    **例三: **函数声明和函数定义时同时设置默认参数(错误)

    #include <cstdio>
    #include <iostream>
    #include <stdlib.h>
    using namespace std;
    
    double calculate(double r = 2,double pi = 3.14); //声明时设置r为2,pi为3.14
    
    int main()
    {
    	cout << calculate() << endl;
    }
    
    double calculate(double r = 1,double pi = 3.14) //定义时设置r为1,pi为3.14
    {
    	return r*r*pi;
    }
    

    结果: 编译错误(我使用的是DEV-C++编译器)

    由此得到了第一个结论:一般在声明函数是设置默认参数。

    那么如果在主函数只传递部分参数呢?

    例一

    double calculate(double r = 2,double pi = 3.14); 
    
    int main()
    {
    	cout << calculate(1) << endl; //只传递一个参数
    }
    
    double calculate(double r,double pi)
    {
    	return r*r*pi;
    }
    

    结果:3.14

    例二

    double calculate(double r = 2,double pi = 3.14); 
    
    int main()
    {
    	cout << calculate(10,3.14) << endl; //传递两个参数
    }
    
    double calculate(double r,double pi)
    {
    	return r*r*pi;
    }
    

    结果:314

    这两个例子体现了函数中默认函数的作用,当传递进来的参数不足形参的个数时,默认其值为函数声明时设置的默认值。

    例三

    double calculate(double r,double pi = 3.14); //声明时只对右边的pi进行设置
    
    int main()
    {
    	cout << calculate(10) << endl;
    }
    
    double calculate(double r,double pi)
    {
    	return r*r*pi;
    }
    

    结果:314

    例四(错误)

    double calculate(double r = 1,double pi); //声明时只对左边的r进行设置
    
    int main()
    {
    	cout << calculate(3.14) << endl;
    }
    
    double calculate(double r,double pi)
    {
    	return r*r*pi;
    }
    

    结果:编译错误

    由例三和例四可以得出:默认参数定义的方向是从右向左

    那么如果我设置多个参数的时候,比如计算一个长方体的体积,开始的时候是这样的:

    double calculate(double l,double w,double h); 
    
    int main()
    {
    	cout << calculate(1,2,3) << endl;
    }
    
    double calculate(double l,double w,double h)
    {
    	return l*w*h;
    }
    

    结果是6,那么接下来我对l和h设置默认值:

    double calculate(double l = 1,double w,double h = 3); 
    
    int main()
    {
    	cout << calculate(2) << endl;
    }
    
    double calculate(double l,double w,double h)
    {
    	return l*w*h;
    }
    

    编译不通过,但是如果把上面的语句改成:

    double calculate(double l,double w = 2,double h = 3); 
    
    int main()
    {
    	cout << calculate(2) << endl;
    }
    
    double calculate(double l,double w,double h)
    {
    	return l*w*h;
    }
    

    结果就是正确的12了。

  • 相关阅读:
    解决方案下显示的网站名称被追加编号的问题解决方法
    sql server 2008 报表服务器(sql server 2008 report service)中如何固定行或者列
    如何通过参数来切换图表和数据
    饼图中如何将一定比例的小切片收集在一起
    饼图图例中显示百分比值
    如何根据条件隐藏列
    饼图上如何显示百分比值
    负载均衡
    在UTF8页中接收和使用以GB2312方式进行URL编码的中文数据
    ASP 格式化显示时间为几个月,几天前,几小时前,几分钟前,或几秒前
  • 原文地址:https://www.cnblogs.com/qq952693358/p/5509960.html
Copyright © 2011-2022 走看看