• PHP、C++的重载


    首先明确一点: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:
    ";
        box_1.display();
    
        box_2.set(5);
        cout<<"box_2:
    ";
        box_2.display();
    
        box_3.set(7,9);
        cout<<"box_3:
    ";
        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!

  • 相关阅读:
    MVC中添加执行统计功能
    SVN 全局忽略列表
    WebApi当中微软又犯了一次2
    SQL性能更总
    【懒人专用】快速构建Web请求
    js中模拟多个字母的split
    分页起始位置的懒汉判断方法
    文档摆放
    转: 多线程环境下调用 HttpWebRequest 并发连接限制
    bash命令根据历史记录补全
  • 原文地址:https://www.cnblogs.com/-beyond/p/5721219.html
Copyright © 2020-2023  润新知