当前位置:  编程技术>php
本页文章导读:
    ▪php中拷贝构造函数、赋值运算符重载       对象的赋值与复制: 赋值:通过“ = ”运算符重载User a(10),b;b = a;复制:调用复制构造函数User b;User a(b);或者User a = b;//相当于User a(b);与赋值的区别,赋值是对一个已经存在的对象进行赋值(.........
    ▪Erlang的运算符(比较运算符,数值运算符,移位运算符,逻辑运算符)       Erlang的比较运算符 opDescription==等于/=不等于=<小于等于<小于>=大于等于>大于=:=精确的等于=/=精确的不等于等于和精确等于的区别: 如果要比较两个数,如果两个数之间是不同的类.........
    ▪php 调试利器debug_print_backtrace()       如果我们想知道某个方法被谁调用了? debug_print_backtrace可以解决debug_print_backtrace() 可以打印出一个页面的调用过程 , 从哪儿来到哪儿去一目了然. 不过这是一个PHP5的专有函数,好在pear中已经.........

[1]php中拷贝构造函数、赋值运算符重载
    来源: 互联网  发布时间: 2013-11-30
对象的赋值与复制: 赋值:通过“ = ”运算符重载
User a(10),b;
b = a;
复制:调用复制构造函数
User b;
User a(b);
或者
User a = b;//相当于User a(b);
与赋值的区别,赋值是对一个已经存在的对象进行赋值(已经实现定义了被赋值的对象),而复制是从无到有建立一个新的对象,并使它与已有的对象相同。
浅复制与深复制: 若对象中有指针成员,在复制时,只会将该指针成员的地址复制给新建立的对象,因此,两个对象中的指针成员都指向了同一块内存区域,在释放时会出现重复释放的问题。 需要手动定义复制构造函数,在构造函数中将为指针变量分配新的内存,是不同对象的指针成员指向不同的内存区域。
用到拷贝构造函数的三种情况: 1、需要建立一个新对象,并用另一个同类对象对其进行初始化 2、函数的参数为类的对象时,在调用函数时需要建立一个实参的拷贝,按实参复制一个形参,系统是通过调用拷贝构造函数实现的 3、函数的返回值是类的对象:函数调用结束时,需要将函数中的对象复制一个临时对象,并传给该函数的调用处。
代码如下:

User getUser()

User temp; 
return temp;
}
int main()

User user = getUser();//调用getUser();
}

getUser()函数调用结束时,getUser中建立的对象temp的生命周期结束(即将销毁),所以不是将temp带回main,而是在执行return语句时,调用User类的拷贝构造函数,按temp拷贝一个新的、对象,然后将它赋值给user.

    
[2]Erlang的运算符(比较运算符,数值运算符,移位运算符,逻辑运算符)
    来源: 互联网  发布时间: 2013-11-30
Erlang的比较运算符

opDescription==等于/=不等于=<小于等于<小于>=大于等于>大于=:=精确的等于=/=精确的不等于等于和精确等于的区别:
如果要比较两个数,如果两个数之间是不同的类型,比如float和int那么,==操作会首先把两个数字转换成相同的相同类型。举例:

1> 1==1.0.
true
2> 1=:=1.0.
false

所以一般推荐用精确等于去比较

比较运算符的大小级别:

number < atom < reference < fun < port < pid < tuple < list < bit string

3> 1 > a.

false

opDescriptionArgument type+
number-
number+
number-
number*
number/浮点数除法,结果是浮点数numberbnot一元not运算符integerdiv整数除法,结果是整数integerrem求玉树integerbandand运算integerboror运算integerbxorxor异或运算integerbsl左移位操作integerbsr右移位操作integer
逻辑运算符

opDescriptionnot一元逻辑notand逻辑andor逻辑orxor逻辑xor原子true 和false表示逻辑的”真”和”假”
此外,逻辑运算符还包括一个orelse 和andalso

原始的or和and是不带”短路运算”操作的,而orelse和andalso是带短路运算操作的。

短路运算举例

Express1 and Express2

Express1 andalso Express2

如果Express1 为假,and会继续判断Express2,然后整体判定为假,而andalso”短路”操作,直接判定整个表达式为假,从效率上来说,andalso会高一些

代码如下:

op Description
== 等于
/= 不等于
=< 小于等于
< 小于
>= 大于等于
> 大于
=:= 精确的等于
=/= 精确的不等于

Examples
代码如下:

> 1==1.0.
true
> 1=:=1.0.
false
> 1 > a.
false

注: 一般语言的 小于等于 是"<=" 而erlang的 "=<" 这样写

    
[3]php 调试利器debug_print_backtrace()
    来源: 互联网  发布时间: 2013-11-30
如果我们想知道某个方法被谁调用了? debug_print_backtrace可以解决
debug_print_backtrace() 可以打印出一个页面的调用过程 , 从哪儿来到哪儿去一目了然.
不过这是一个PHP5的专有函数,好在pear中已经有了实现,
http://pear.php.net/package/PHP_Compat

测试代码
代码如下:

<?php
class a{
function say($msg) {
echo "msg:".$msg;
echo "<pre>";debug_print_backtrace();
}
}

class b {
function say($msg) {
$a = new a();
$a->say($msg);
}
}

class c {
function __construct($msg) {
$b = new b();
$b->say($msg);
}
}

$c = new c("test");

输出结果
代码如下:

msg:test
#0 a->say(test) called at [/var/www/test/test0723.php:12]
#1 b->say(test) called at [/var/www/test/test0723.php:19]
#2 c->__construct(test) called at [/var/www/test/test0723.php:23]

相关链接

http://ch2.php.net/manual/zh/function.debug-print-backtrace.php
http://ch2.php.net/manual/zh/function.debug-backtrace.php

    
最新技术文章:
▪PHP函数microtime()时间戳的定义与用法
▪PHP单一入口之apache配置内容
▪PHP数组排序方法总结(收藏)
▪php数组排序方法大全(脚本学堂整理奉献)
▪php数组排序的几个函数(附实例)
▪php二维数组排序(实例)
▪php根据键值对二维数组排序的小例子
▪php验证码(附截图)
▪php数组长度的获取方法(三个实例)
▪php获取数组长度的方法举例
▪判断php数组维度(php数组长度)的方法
▪php获取图片的exif信息的示例代码
▪PHP 数组key长度对性能的影响实例分析
▪php函数指定默认值的方法示例
▪php提交表单到当前页面、提交表单后页面重定...
▪php四舍五入的三种实现方法
▪php获得数组长度(元素个数)的方法
▪php日期函数的简单示例代码
▪php数学函数的简单示例代码
▪php字符串函数的简单示例代码
▪php文件下载代码(多浏览器兼容、支持中文文...
▪php实现文件下载、支持中文文件名的示例代码...
▪php文件下载(防止中文文件名乱码)的示例代码
▪解决PHP文件下载时中文文件名乱码的问题
▪php数组去重(一维、二维数组去重)的简单示例
▪php小数点后取两位的三种实现方法
▪php Redis 队列服务的简单示例
▪php小数点后取两位的三种实现方法 iis7站长之家
▪PHP数组根据值获取Key的简单示例
▪php数组去重的函数代码示例
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3