问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

c++构造函数和析构函数的区别

发布网友 发布时间:2022-04-06 06:46

我来回答

2个回答

懂视网 时间:2022-04-06 11:07

构造函数

__construct ([ mixed $args [, $... ]] ) : void

PHP 5 允行开发者在一个类中定义一个方法作为构造函数。具有构造函数的类会在每次创建新对象时先调用此方法,所以非常适合在使用对象之前做一些初始化工作。

(推荐教程:php教程)

注意:如果子类中定义了构造函数则不会隐式调用其父类的构造函数。要执行父类的构造函数,需要在子类的构造函数中调用 parent::__construct()。如果子类没有定义构造函数则会如同一个普通的类方法一样从父类继承(假如没有被定义为 private 的话)。

代码示例:

<?php
class BaseClass {
 function __construct() {
 print "In BaseClass constructor
";
 }
}

class SubClass extends BaseClass {
 function __construct() {
 parent::__construct();
 print "In SubClass constructor
";
 }
}

class OtherSubClass extends BaseClass {
 // inherits BaseClass's constructor
}

// In BaseClass constructor
$obj = new BaseClass();

// In BaseClass constructor
// In SubClass constructor
$obj = new SubClass();

// In BaseClass constructor
$obj = new OtherSubClass();
?>

为了实现向后兼容性,如果 PHP 5 在类中找不到 __construct() 函数并且也没有从父类继承一个的话,它就会尝试寻找旧式的构造函数,也就是和类同名的函数。因此唯一会产生兼容性问题的情况是:类中已有一个名为 __construct() 的方法却被用于其它用途时。

与其它方法不同,当 __construct() 被与父类 __construct() 具有不同参数的方法覆盖时,PHP 不会产生一个 E_STRICT错误信息。

自 PHP 5.3.3 起,在命名空间中,与类名同名的方法不再作为构造函数。这一改变不影响不在命名空间中的类。

代码示例:

<?php
namespace Foo;
class Bar {
 public function Bar() {
 // treated as constructor in PHP 5.3.0-5.3.2
 // treated as regular method as of PHP 5.3.3
 }
}

析构函数

__destruct ( void ) : void

PHP 5 引入了析构函数的概念,这类似于其它面向对象的语言,如 C++。析构函数会在某个对象的所有引用都被删除或者当对象被显式销毁时执行。

代码示例:

<?php
class MyDestructableClass {
 function __construct() {
 print "In constructor
";
 $this->name = "MyDestructableClass";
 }

 function __destruct() {
 print "Destroying " . $this->name . "
";
 }
}

$obj = new MyDestructableClass();

和构造函数一样,父类的析构函数不会被引擎暗中调用。要执行父类的析构函数,必须在子类的析构函数体中显式调用 parent::__destruct()。此外也和构造函数一样,子类如果自己没有定义析构函数则会继承父类的。

析构函数即使在使用 exit() 终止脚本运行时也会被调用。在析构函数中调用 exit() 将会中止其余关闭操作的运行。

热心网友 时间:2022-04-06 08:15

构造函数可以理解成 实现对内部成员变量的初始化操作。
析构函数则相反,当对象销毁时,执行一些特定的操作,比方说:指针成员占用的内存空间。
直接理解,一个是建立对象时给对象属性赋值,一个是销毁对象时,释放属性(或其它操作,比如,通知某个对象或什么,告知他们:我被销毁了之类的)
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
母爱作文(围绕一句话来写)900字 月经期能喝冰糖沙梨水? 石家庄火车站骗钱 五等分的新娘手游汉化安卓游戏官方下载 昆明看守所那个看守所好在 成建军行政拘留 青岛贵捷充换电设备成套服务有限公司怎么样? 合肥贵捷商贸有限责任公司怎么样? 南京贵捷物资有限公司怎么样? 上海贵捷电气有限公司产品用途 c++中的析构函数和构造函数搞不懂,谁能生动的解释一下,最好给一个典型而又简单的例子。拜托了!!! 构造函数和析构函数的区别 构造函数和析构函数求详解 构造函数和析构函数的主要作用是什么?它们各有什么特性? 析构函数与构造函数有什么区别? php判断一个参数在一个数组中是否存在 判断PHP数组是否为空的代码 php如何判断数组为空 asp,asp.net,php,jsp的区别是什么呢 php数据导出csv格式出错 怎么解决? php乱码,如图,文件保存也为utf-8,打印出来的怎么还是乱码? PHP导出CSV格式文件因为导出数据中有英文逗号导致分列错误怎么处理 PHP导入csv文件乱码问题 php 读取csv 乱码 php的fopen打开csv文件,文字乱码? thinkphp里面导入csv数据出现乱码怎么破 求一个php数字的算法 给我一段php代码:1到100,当是3的倍数时显示A,当是5的倍数时显示B,当既是3的倍数也是5的倍数时显示C,感谢 PHP中 一个变量带入3个IF中做比较 如果满足第三个条件则不再返回前两个条件满足时的值怎么做到 PHP除法问题&#47;1000怎么实现 我有一个标签{?$articleid?} 我想除1000,请问怎么实现呢? 什么是构造函数和析构函数?有何作用?为什么要引入? 构造函数与析构函数的特征与关系 请教高手解释下构造函数与析构函数的用法和作用 1、 类的构造函数与析构函数各自的特点以及其区别和联系。 构造函数和析构函数的用法特点及格式 c++中构造函数与析构函数的区别 c语言中的构造函数和析构函数的异同点 构造函数和析构函数,通俗点说,是什么 简述构造函数与析构函数的作用及调用顺序 C++构造函数和析构函数到底有什么作用啊?。。。一菜鸟求助!!! 与一般成员函数比较,构造函数和析构函数有哪些特点? 求过程。求4.5哪里来的。求构造函数和析构函数的顺序原理 如何使用PHP通过SMTP发送电子邮件 PHP如何通过SMTP验证发送邮件 PHP如何通过SMTP发送邮件? php通过 smtp发送邮件问题 请问一下,PHP配置SMTP怎么弄? php smtp发送邮件 请问:如何用php smtp 发邮件(windows下) 如何在 BlueHost 空间中用 PHP 以 SMTP 方式发送邮件