• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

PHP、C++的重载

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

首先明确一点:PHP重载是用在面向对象的类当中,而不支持函数重载。

这点与C++不一样,在C++当中,重载可以用于面向过程和面向对象,而且方法也不一样。

在C++中,重载适用于当函数名相同时,函数所需的参数个数不相同或者参数个数相同,而参数的类型不同的情况,

在程序编译时,自动根据已提供的参数个数及类型选择相应的函数进行操作,比如下面一段C++代码:

#include<iostream>
using namespace std;
class Box{
private:
    int l,w;
public:
    void set(){
        l=0; w=0;
    }
  //此处重载的是set()函数
    void set(int ll){
        l=ll; w=0;
    }
    void set(int ll,int ww){
        l=ll; w=ww;
    }

    void display(){
        cout<<"L="<<l<<";";
        cout<<"W="<<w<<endl;
    }
};
int main()
{
    Box box_1,box_2,box_3;
    box_1.set();
    cout<<"box_1:\n";
    box_1.display();

    box_2.set(5);
    cout<<"box_2:\n";
    box_2.display();

    box_3.set(7,9);
    cout<<"box_3:\n";
    box_3.display();
}

 输出结果是:

box_1:

L=0;w=0

box_2:

L=5;W=0

box_3:

L=7;W=9

从结果当中可以看出,在参数个数不同的时候,执行了不同的函数。

回到正题,PHP的重载在我看来其实就是一种覆盖(或者修改),即在父类的基础上,进行修改,赋予子类一个新的功能,该功能是父类当中没有的。C++当中亦可如此,只不过在C++中不叫重载罢了。

参考一下代码:

<?php
	class Student{
		public function display(){
			echo "I am a student! <br>";
			echo "I haven't graduate <br>";
		}
	}

	class Graduate extends Student{
		public function display(){
			//要想实现重载,则子类当中需要重载的函数名必须与父类当中此函数的函数名相同
			//此处以display()为例。
			echo "I was a student before! <br>";
			echo "but I have graduated! <br>";
		}
	}

	$stu=new Student();
	$stu->display();

	$gra=new Graduate();
	$gra->display();	
?> 

  

 输出结果:

I am a student!
I haven't graduate
I was a student before!
but I have graduated!


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
快速、冒泡排序算法(PHP版)发布时间:2022-07-10
下一篇:
php添加redis扩展发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap