C++进阶之有默认参数的构造函数

现在给大家介绍下 有默认参数的构造函数:

大家知道函数获取形参的时候是通过函数调用时在实参里获得的,因此我们必须保证 实参的个数 和 形参的个数必须相同。而且有些情况下我们对于实参或许都是个固定的值。例如 我们需要计算长方形的面积 长x宽 但是用户可以不输入长 而且如果用户指定的情况下默认的长为 3,但是如果用户指定了则使用用户指定的宽 这就是用到默认参数了!

代码:

#include <iostream>
using namespace std;
int area(int l,int w=3);// 函数声明 并定义默认参数w=3;

int main(){
    int c=4; //长
    int k=5;
    int res; //结果
    res = area(c);
    cout<<res<<endl;
    return 0;
}
int area(int l,int w){//函数定义 l长 w宽
    int res=0;
    res = l*w;
    return res;
}

例如上面的代码,如果我们像在8行 res=area(c); 这里没有写成 res=area(c,w);则表示 不指定宽是多少,所以如果写成了 后面这样则说明用户指定了这个长方形的宽 为5;那么两者的结果就是不同的!

前者额结果为 12

后者的记过为 20

这就是默认参数的函数 和 没有默认参数函数的区别;

下面的习题:

设计函数,计算长方体的体积 和 长方形的面积

如果用户指定了三个参数则计算长方体的 体积 如果用户输入2个参数则计算长方形面积!

利用到含有默认参数的构造函数;

参考代码:

#include "stdafx.h"
#include <iostream>
#include <cmath>
using namespace std;
int area(int l,int w,int h=1);// 函数声明 并定义默认参数w=3;

int main(){
    int c=4; //长
    int k=5;//宽
    int h=2;//高 
    int res; //结果
    res = area(c,k);
    int res2=area(c,k,h);
    cout<<"面积为 ="<<res<<endl;
    cout<<"体积为 ="<<res2<<endl;
    return 0;
}
int area(int l,int w,int h){//函数定义 l长 w宽
    int res=0;
    res = l*w*h;
    return res;
}

注意:

如果函数的定义在函数调用之前,则应该在函数定义中给出默认值,如果函数的定义在函数调用之后,那么函数调用之前需要有函数声明,此时必须在声明中给出默认值;

在函数定义时可以不给出默认值,也就是说必须在函数调用之前将默认值信息通知编译器。

一个函数不能既作为重载函数,又作为默认参数的函数,因为当调用函数的时候如果少写了参数,系统无法判定是利用的重载函数还是默认参数函数,出现二义性。

如需帮助请关注:http://weibo.com/cnbailu
原文链接: https://www.cnblogs.com/cnbailu/archive/2012/04/10/2440737.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/46922

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月8日 下午11:01
下一篇 2023年2月8日 下午11:02

相关推荐