C++学习之路(2) C++输入输出 new delete操作符 函数重载
来源:互联网 发布:windows访问共享文件夹 编辑:程序博客网 时间:2024/05/14 05:09
源码见github,仓库地址为:https://github.com/Kelvinmao/Cplusplus
一. C++风格的输入输出
在编写C++程序时,如果需要使用输入输出时,则需要包含头文件 iostream。在 iostream 中定义了用于输入输出的对象,例如常见的 cin 表示标准输入、cout 表示标准输出、cerr 表示标准错误。
使用 cout 进行输出时需要紧跟<<
操作符,使用 cin 进行输入时需要紧跟>>
操作符,这两个操作符可以自行分析所处理的数据类型,因此无需像使用 scanf 和 printf 那样给出格式控制字符串。
下面的示例代码给出了cin cout的基本用法:
#include<iostream>using namespace std;int main(void){ int x=0; float y=0.0; cout<<"Please input an integer number:"<<endl; cin>>x; cout<<"The integer number is:"<<x<<endl; cout<<"Please input a float number:"<<endl; cin>>y; cout<<"The float number is:"<<y<<endl;}
其中endl表示换行,与C语言里的“\n”作用相同;当然这段代码中也可以用“‘\n’”来替代 endl。
当然cin 也可以进行连续输入,将cin>>x改为cin>>x>>y即可,输入时默认用空格隔开
二.new和delete操作符
C语言中用malloc和free来管理内存,在C++中又新增了new和delete两个操作符
C语言中,分配10个int空间的语句为:int *p=(int *)malloc(10*sizeof(int));free(p);
C++中更为方便int *p=new int[10];delete []p;
和 malloc() 一样,new 也是在堆区分配内存,必须手动释放,否则只能等到程序运行结束由操作系统回收。为了避免内存泄露,通常 new 和 delete、new[] 和 delete[] 操作符应该成对出现,并且不要和C语言中 malloc()、free() 一起混用。三. C++函数重载
有时我们要实现的是同一类的功能,只是有些细节不同。例如希望从3个数中找出其中的最大者,而每次求最大数时数据的类型不同,可能是3个整数、3个双精度数或3个长整数。在C语言中,我们就要写出三个不同名字的函数,C++中,则没有这个必要,因为C++支持函数重载。
C++允许多个函数拥有相同的名字,只要它们的参数列表不同就可以。这就是函数的重载(Function Overloading)。借助重载,一个函数名可以有多种用途。
参数列表又叫参数签名,包括参数的类型、参数的个数和参数的顺序,只要有一个不同就叫做参数列表不同。
#include<iostream>using namespace std;int max(int a,int b,int c){ if(b>a) a=b; if(c>a) a=c; return a;}float max(float a,float b,float c){ if(b>a) a=b; if(c>a) a=c; return a;}int main(void){ int a=0,b=0,c=0,imax=0; cin>>a>>b>>c; imax=max(a,b,c); cout<<"The max number is:"<<imax<<endl; float d=0.0,e=0.0,f=0.0,fmax=0.0; cin>>d>>e>>f; fmax=max(d,e,f); cout<<"The max number is:"<<fmax<<endl;}
由此可以看出,重载就是在一个作用范围内有多个名称一样但参数列表不同的函数,重载可以让一个程序段减少代码和方法种类。在使用重载函数时,同名函数的功能应当相同或相近,不要用同一函数名去实现完全不相干的功能,虽然程序也能运行,但可读性不好,使人莫名其妙。说明:参数列表不同包括个数不同、类型不同和顺序不同,仅仅参数变量名称不同是不可以的。函数的重载的规则: 1. 函数名称必须相同。 2. 参数列表必须不同 3. 返回值可以不同 4. 如果只是返回值不同不能重载
函数重载的实现C++ 代码在编译时会根据参数列表对函数进行重命名,例如,int max(int, int, int) 会被重命名为 _max_int_int_int,double max(double, double, double) 会被重命名为 _max_double_double_double,所以在本质上来说它们还是不同的函数。
当发生函数调用时,编译器会根据参数列表去逐个匹配,以选择对应的函数,如果匹配失败,则编译器报错。这叫做重载分辨。
- C++学习之路(2) C++输入输出 new delete操作符 函数重载
- C++new和delete重载
- 操作符重载 new delete
- 重载new / delete 操作符
- 【从C到C++学习笔记】域运算符/new/delete运算符/重载/Name managling/extern "C"/带函数默认值参数
- 重载new()delete()的笔记----C++学习之路
- C++学习笔记(三) 域运算符 new delete运算符 重载 name managling与extern"c" 带默认参数函数
- 关于重载new delete new[] delete[]笔记----C++学习之路
- 重载new 和 delete 操作符
- new和delete操作符重载
- 重载new和delete操作符
- 【重载new和delete操作符】
- C++ 笔记,重载new , delete 操作符
- C++ new/delete操作符重载
- 【C++】new delete & new[] delete[]
- 【C++】重载输入输出运算符
- 从零开始学C++之从C到C++(一):const与#define、结构体对齐、函数重载name mangling、new/delete 等
- 从零开始学C++之从C到C++(一):const与#define、结构体对齐、函数重载name mangling、new/delete 等
- java泛型
- poj3660 Cow Contest
- reinterpret_cast <new_type> (expression)
- 编辑器扩展
- 【交换机】日志服务器无法接收到交换机发送的syslog日志故障的常规排查思路
- C++学习之路(2) C++输入输出 new delete操作符 函数重载
- Java常用排序算法/程序员必须掌握的8大排序算法
- 大学排名-Collections
- 正则表达式快速入门
- Python操作IE的代码
- C/Java/Unity(C#)三者间大数据交互简析
- HDU5745解题报告 暴力压位
- UVa 11400
- 广播——系统广播事件