网站建设联关键词百度网盘

函数的重载
在C语言中函数名是唯一的,不可以重复定义,当我们利用函数执行,功能相似的函数,我们也不能使用同一个函数,比如说,求整型的函数,不能用来求浮点型、字符型。在C++中引入函数重载的概念,函数名可以相同,只要函数的参数类型不同或者参数的个数不同。
#include <iostream>
using namespace std;int mymax(int a, int b)
{return a > b ? a : b;
}float mymax(float a, float b)
{return a > b ? a : b;
}double mymax(double a, double b)
{return a > b ? a : b;
}char mymax(char a,char b)
{return a > b ? a : b;
}int main()
{cout << mymax(10, 20) << endl;cout << mymax(3.14, 5.20) << endl;cout << mymax(2.33333333, 5.555555) << endl;cout << mymax('a', 'A') << endl;return 0;
}

在C++中支持函数的重载,允许函数名相同,只需要函数参数的类型不相同或参数的个数不同。它优于C语言的是我们不需要大量记忆功能相同的函数名。比如上面的求最大值的函数,我们只需要记忆mymax是求最大值的函数,如果是C语言我们就需要记忆4个函数名,因为C语言不支持函数的重载,函数名不可以相同。
作用域运算符::
我们在C语言中已经知道了变量的作用域范围
当一个局部和全局变量同时存在的时候,我们优先使用局部变量,那我们又想使用全局变量怎么办,我们加作用域运算符就可以优先使用全局变量了。
#include <iostream>
using namespace std;int a = 100;int main()
{int a = 10;cout << "a=" << a << endl;cout << "::a=" << ::a << endl;return 0;
}

强制类型转换
在C语言中我们也学过强制类型转换,C++也可以使用C语言的强制类型转换,在C++引入新的强制转换的方法就是为了,更加的方便
#include <iostream>
using namespace std;int main()
{float f = 3.14;cout << (int)f << endl;//C语言的写法cout << int(f) << endl;//C++的写法return 0;
}
C++的强制类型转换与C语言的强制类型转换的不同就在,C语言是把要强制类型转换的类型加括号,C++的写法是将我们要强制转换的数据变量括起来。
#include <iostream>
using namespace std;int main()
{float f = 3.14;int a = (int)f + 0.9;int b = int(f + 0.9);int c = (int)(f + 0.9);cout << "a=" << a << " " << "b=" << b << " " << "c=" << c << endl;return 0;
}

如果我们要强制类型转换f+0.9,在C语言需要两个括号,而C++只需要一个括号。
运算符new和delete
C语言中我们使用malloc,realloc来申请动态的内存空间,在C++中我们使用new来申请空间
C语言使用free释放内存空间,而C++使用delete来释放空间
我们先写一个程序看看new和delete是怎么使用的
#include <iostream>
using namespace std;int main()
{int* p = new int;//公式: 指针变量名=new 类型名。 该行代码的作用是申请一个整型空间,然后这个整型空间的地址存在p指针中*p = 100;cout << *p << endl;delete p;//释放申请的整型空间,防止内存泄露return 0;
}
那么我们假如要申请很多个整型空间怎么做呢
#include <iostream>
#include <stdio.h>
using namespace std;int main()
{int* p = new int[10];//向内存申请10个整型空间,首地址给p 公式:指针变量名=new 类型名[size] size是申请的个数if (p == NULL)//判断是否申请空间成功{perror("new:");//打印错误信息return 1;//结束程序}for (int i = 0; i < 10; i++)//输入10个元素{cin >> p[i];}for (int i = 0; i < 10; i++)//输出{cout<< p[i]<<" ";}delete []p;//释放我们数组的空间 公式: delete [] 指针变量名return 0;
}
#include <iostream>
using namespace std;int main()
{int* p = new int(100);//申请一个整型空间,并且将100赋值给*pcout << *p << endl;delete p;return 0;
}
C语言的动态内存申请,malloc、realloc申请成功返回的是void*的指针,我们还需要进行类型转换。而new开辟的内存空间成功返回的直接是首地址,不需要强制类型转换,malloc也需要进行字节大小的计算,所以,C++中new申请动态内存空间更加便利。