码迷,mamicode.com
首页 > 编程语言 > 详细

PHP、C++的重载

时间:2016-07-30 18:05:30      阅读:163      评论:0      收藏:0      [点我收藏+]

标签:

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++中不叫重载罢了。

参考一下代码:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>重载</title>
	</head>
	<body>
		<?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();	
		?> 
	</body>
</html>

 输出结果:

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

PHP、C++的重载

标签:

原文地址:http://www.cnblogs.com/-beyond/p/5721219.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!