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了。

  • 相关阅读:
    张艾迪(创始人):AOOOiA.global因梦想而诞生
    openx中如何使用site-variable(参数)限制(关键词)广告显示
    那些支持图片外链的免费相册
    php获取html纯文本,解决编辑器手动键入空格造成的无意义空白字符(空值问题)
    ios7迎来完美越狱,果粉狂欢!
    如何记录搜索引擎爬行记录php版
    购物返现网址大全
    jquery .post .get中文参数乱码解决方法详解
    【BUG】wego购物分享系统未登陆分享宝贝时查看宝贝自动新增产品数据
    让wego微购购物分享系统采集拍拍数据功能之腾讯paipai功能采集插件
  • 原文地址:https://www.cnblogs.com/qq952693358/p/5509960.html
Copyright © 2011-2022 走看看