c++基础学习(04AM)

来源:互联网 发布:c语言windows代码 编辑:程序博客网 时间:2024/04/30 04:24

1.控制语句分为:

    a.条件 if else

    b.分支switch

    c.循环while for

2.函数重载

参数类型或参数个数不同。

返回值不同不能视为重载。

是否为常函数不能视为重载

对于普通类型参数只有const、volatile区别不能视为重载,但是如果参数是指针或 引用类型,那么const、volatile的区别视为重载。

试分析以下两种情况,是否构成函数的重载。
第一种情况:(1)void output();
            (2)int output();
第二种情况:(1)void output(int a,int b=5);
            (2)void output(int a);
对于第一种情况,当我们在程序中调用output函数的时候,要注意:只有函数的返回类型不同是不能构成函数的重载的。
对于第二种情况,当我们在程序中调用output(5)的时候,应该调用哪一个函数呢?是调用第一个吗?是调用第二个吗?当然两个都是可以的,因为第一个的第二个参数有一个默认值。这时候在编译器就不知道怎么办了?你让它在选择调用函数的时候产生了歧义,它当然就会给你报错啦。
记住:在函数重载时,要注意函数带有默认参数的这种情况了。

3.相关代码:
#include <iostream>
using namespace std;
//f(x)=x*x+x-6
int f(int x)
{
return x*x+x-6;
}
//f(x,y)=x*x+y*y-x*y
int f(int x,int y)//名字相同,不同参数表角函数重载,不同参数表中的类型不同、或者个数不同或者顺序不同
{
return x*x+y*y-x*y;
}


double digui(int n)
{
  if(n<0)
 return 0.0;
  else if(n==0)//注意这个地方是0不是1
 return 1.0;
  else //if(n>1)
 return n*digui(n-1);
}


int main()
{
cout << f(3) << endl;
cout << f(1) << endl;
cout << f(2) << endl;
cout << f(3)+f(1)-f(2) << endl;
cout << f(3,4) << endl;


cout << endl;
cout << digui(3) << endl;


   return 0;//main()中这句可写可不写,其他函数中,这句必须写
}
4.函数的声明
  先声明后使用
   函数声明只写函数名字和分号,最好写参数表的参数名字,不写也不错.
5.用栈来保存现场(保存数据),恢复现场(释放数据)
6.相关代码:
#include <iostream>
using namespace std;

void f1();
int main()
{
    f1();
    return 0;
}
void f1()
{
    cout << "nihao!" << endl;
}

void f2()
{
    cout << "wo hao!" << endl;
}

/*
int main()
{
    f1();
    f2();
    return 0;
}
*/

0 0