• c++中的函数重载


         函数多态也称为函数重载。

     (1)函数重载指的是可以有多个同名的函数,因此对名称进行了重载。

     (2)函数重载的关键在于函数的参数列表,也称为函数特征标。如果两个函数的参数数目和参数类型相同,同时参数的排列顺序也相同,则他们的特征标也相同,而变量名是无关紧要的。

        (3)c++允许定义名称相同的函数,条件是他们的特征标相同。如果两个函数的参数数目/或参数类型不同,则特征标也不同。

        (4)c++判断是否重载的标准的函数的特征标。

        (5)如果仅仅是函数的返回值类型不同,而函数的特征标相同,则不能认为是重载。(有时我们不用返回值,这样编辑器就看不出来到底调用的是哪一个函数)

        Demo_01:

    #include <iostream>
    unsigned long left (unsigned long num, unsigned int ct);
    char * left (const char *str, int n = 1);
    int main()
    {
    	using namespace std;
    	char *trip = "HelloWorld";
    	unsigned long n =  12345;
    	char *temp;
    	for (int i = 1; i < 11; i++)
    	{
    		cout << left(n, i) << endl;
    		temp = left(trip, i);
    		cout <<temp<<endl;
    		delete [] temp;
    	}
    	return 0;
    }
    
    unsigned long left(unsigned long num, unsigned int ct)
    {
    	unsigned digits = 1;
    	unsigned long n = num;
    
    	if (ct == 0 || num == 0)
    	{
    		return 0;
    	}
    	while (n /=10)
    	{
    		digits++;
    	}
    	if (digits > ct)
    	{
    		ct = digits - ct ;
    		while (ct--)
    		{
    			num /= 10;
    		}
    		return num;
    	}
    	else
    	{
    		return num;
    	}
    }
    
    char * left(const char *str, int n /*= 1*/)
    {
    	if (n < 0)
    	{
    		n = 0;
    	}
    	char *p = new char[n+1];
    	int i, count;
    	for (i = 0; i < n && str[i]; i++)
    	{
    		p[i] = str[i];
    	}
    	while (i <=  n)
    	{
    		p[i++] = '';
    	}
    	return p;
    }
    

     运行结果:

  • 相关阅读:
    Cocos 更新时反复杀进程,导致差异更新失效的Bug
    Cocos 编译android-studio
    Could not resolve all dependencies for configuration ':classpath'
    MAC Gradle 下载的问题
    命令行创建 keystore
    应用间共享文件 FileProvider
    Android jks 签名文件 生成
    Gradle 离线 安装
    信息
    Cocos Lua的Touch 点击事件添加
  • 原文地址:https://www.cnblogs.com/bosongokay/p/8993735.html
Copyright © 2020-2023  润新知