首先明确一点: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!

PHP、C++的重载的更多相关文章

  1. .NET 基础 一步步 一幕幕[面向对象之方法、方法的重载、方法的重写、方法的递归]

    方法.方法的重载.方法的重写.方法的递归 方法: 将一堆代码进行重用的一种机制. 语法: [访问修饰符] 返回类型 <方法名>(参数列表){ 方法主体: } 返回值类型:如果不需要写返回值 ...

  2. PHP类和对象之重载

    PHP中的重载指的是动态的创建属性与方法,是通过魔术方法来实现的.属性的重载通过__set,__get,__isset,__unset来分别实现对不存在属性的赋值.读取.判断属性是否设置.销毁属性. ...

  3. C#基础回顾(二)—页面值传递、重载与重写、类与结构体、装箱与拆箱

    一.前言 -孤独的路上有梦想作伴,乘风破浪- 二.页面值传递 (1)C#各页面之间可以进行数据的交换和传递,页面之间可根据获取的数据,进行各自的操作(跳转.计算等操作).为了实现多种方式的数据传递,C ...

  4. new/delete重载

    在c++中,有时我们需要在运行阶段为一个变量分配未命名的内存,并使用指针来访问它,这里就可以用到new关键字.另外需要指出的是,new分配的内存块通常与常规变量分配的内存块不同,常规变量的值都储存在被 ...

  5. java重载与覆写

    很多同学对于overload和override傻傻分不清楚,建议不要死记硬背概念性的知识,要理解着去记忆. 先给出我的定义: overload(重载):在同一类或者有着继承关系的类中,一组名称相同,参 ...

  6. 【C++】多态性(函数重载与虚函数)

    多态性就是同一符号或名字在不同情况下具有不同解释的现象.多态性有两种表现形式: 编译时多态性:同一对象收到相同的消息却产生不同的函数调用,一般通过函数重载来实现,在编译时就实现了绑定,属于静态绑定. ...

  7. C++ 运算符重载时,将运算符两边对象交换问题.

    在C++进行运算符重载时, 一般来讲,运算符两边的对象的顺序是不能交换的. 比如下面的例子: #include <iostream> using namespace std; class ...

  8. C++重载new和delete运算符

    内存管理运算符 new.new[].delete 和 delete[] 也可以进行重载,其重载形式既可以是类的成员函数,也可以是全局函数.一般情况下,内建的内存管理运算符就够用了,只有在需要自己管理内 ...

  9. Java学习笔记之方法重载

    被重载的方法必须具有不同的参数列表.不能基于不同修饰符或返回值类型来重载方法. package welcome; public class TestMethodOverloading { public ...

  10. Qt 5.0+ 中 connect 新语法与重载函数不兼容问题的解决方法,以及个人看法

    Qt 5.0+ 版本提供了 connect 的新语法,相比之前的语法新语法可以提供编译期检查,使用也更方便.可是使用过程中发现一个小问题——当某个 signal 和成员函数是重载关系的时候,qmake ...

随机推荐

  1. JS实现会动的小车

    2015-06-05怎么说呢,我想要实现的功能是很简单的,但是过程中,遇到不少问题. 我要实现的功能是页面右侧有辆小车,鼠标滚动或者拉动滚动条,小车消失,在底部点击“返还顶部”按钮后,页面缓慢向上滚动 ...

  2. Linux下把Mysql和Apache加入到系统服务里

    Linux下注册Apache与MySQL为系统服务 Apache加入到系统服务里面: cp /安装目录下/apache/bin/apachectl /etc/rc.d/init.d/httpd 修改h ...

  3. eclipse中SVN分支合并到主干

    在项目开发中,需要添加一些新的功能,但是又不想影响到其他开发人员的项目进度,所以决定使用SVN分支进行开发,分支开发完毕后再合并到主干.本文介绍如何在eclipse中合并分支到主干. 1. 要想将分支 ...

  4. poi 读取 excel(.xlsx) 2007及以上版本

    1.注意的一点是sh.getLastRowNum(),比实际的行数少一行 涉及到的包:

  5. C#获取相对路径的方法

    这八种C#获取相对路径的方法,包括获取和设置当前目录的完全限定路径.获取启动了应用程序的可执行文件的路径,不包括可执行文件的名称等等内容. C#获取相对路径1. 获取和设置当前目录的完全限定路径.   ...

  6. test python

    #coding = utf-8import conn as confrom mysql import mysql as my def link_ppd( pre = 'ppd' ):#link ppd ...

  7. Python 2.7教程

    参考:http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000

  8. TCP协议基础

    IP协议是Internet上使用的一个关键协议,它的全称是Internet  Protocol,即Internet协议,通常简称IP协议.通过使用IP协议,使Internet·成为一个允许连接不同类型 ...

  9. eclipse快捷键失效的解决办法

    今天敲html代码,突然发现ctrl+D不能用了,shift+enter/shift+ctrl+enter也不能用了,上网上搜了下,原来我是在文本模式下打开的.切换为html editor打开就o了. ...

  10. 统计sql语句执行效率

    --统计sql语句执行效率SELECT (total_elapsed_time / execution_count)/1000 N'平均时间ms' ,total_elapsed_time/1000 N ...