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)的时候,应该调用哪一个函数呢?是调用第一个吗?是调用第二个吗?当然两个都是可以的,因为第一个的第二个参数有一个默认值。这时候在编译器就不知道怎么办了?你让它在选择调用函数的时候产生了歧义,它当然就会给你报错啦。
记住:在函数重载时,要注意函数带有默认参数的这种情况了。
第一种情况:(1)void output();
第二种情况:(1)void output(int a,int b=5);
对于第一种情况,当我们在程序中调用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()中这句可写可不写,其他函数中,这句必须写
}
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;
}
*/
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
- c++基础学习(04AM)
- C++基础学习(03AM)
- c++基础学习(05AM)
- C++基础学习(06AM)
- C基础学习(二)
- C基础学习(三)
- C基础学习(一)
- C++&C学习笔记(一)(基础)
- am命令学习
- 敏捷开发学习笔记-Agile development(AM)
- C语言学习参考(基础&进阶)
- Obiective-C基础学习(一)
- 学习笔记:C程序基础(1)
- 学习笔记:C程序基础(2)
- 学习笔记:C程序基础(3)
- 0基础学习数据库(c#)sqlhelper
- C语言基础学习 (1)
- Object-C 基础学习(一)
- 仿iOS猎豹垃圾清理(实现原理+源码)
- 评教有感
- 评教——一个让我得到锻炼的平台
- Tower of Hanoi (递归的神奇之力--化繁为简)
- Python模块学习 ---- thread 多线程处理
- c++基础学习(04AM)
- Numpy学习笔记2-创建array的几种方式
- MyEclipse打包Jar包及生成.exe可执行文件
- PHP PSR-4 Autoloader 自动加载(中文版)
- 【hadoop0002】Bulid Hadoop Cluster Environment FAQ
- Android 3s动画渐变效果到登陆页面
- c++设计模式之策略模式
- 百度之星资格赛
- Ubuntu建立快捷方式(eclipse)