上一页 1 ··· 10 11 12 13 14
摘要: C++ 用异常使得可以将正常执行代码和出错处理区别开来。 比如一个栈,其为空时,调用其一个pop 函数,接下来怎么办? 栈本身并不知道该如何处理,需要通知给其调用者(caller),因为只有调用者清楚接下来该怎么做。 异常,就提供了一个很好机制。 但是异常需要操作系统,编译器,RTTI的特性支持。下面围绕一个问题 “为什么析构函数不能抛出异常?” 展开C++中异常的实现。Effective C++ 里面有一条”别让异常逃离析构函数“,大意说是Don't do that, otherwise the behavior is undefined. 这里讨论一下从异常的实现角度,讨论一下为什 阅读全文
posted @ 2013-08-18 12:30 问笑 阅读(451) 评论(0) 推荐(0)
摘要: 智 能指针(smart pointer)是存储指向动态分配(堆)对象指针的类,用于生存期控制,能够确保自动正确的销毁动态分配的对象,防止内存泄露。它的一种通用实现技术是 使用引用计数(reference count)。智能指针类将一个计数器与类指向的对象相关联,引用计数跟踪该类有多少个对象共享同一指针。每次创建类的新对象时,初始化指针并将引用计数置为1;当对象作为另一对象的副本而创建时,拷贝构造函数拷贝指针并增加与之相应的引用计数;对一个对象进行赋值时,赋值操作符减少左操作数所指对象的引用计数(如果引用计数为减至0,则删除对象),并增加右操作数所指对象的引用计数;调用析构函数时,构造函数减少. 阅读全文
posted @ 2013-08-18 12:12 问笑 阅读(269) 评论(0) 推荐(0)
摘要: 一、简介由于 C++ 语言没有自动内存回收机制,程序员每次 new 出来的内存都要手动 delete。程序员忘记 delete,流程太复杂,最终导致没有 delete,异常导致程序过早退出,没有执行 delete 的情况并不罕见。用智能指针便可以有效缓解这类问题,本文主要讲解参见的智能指针的用法。包括:std::auto_ptr、boost::scoped_ptr、 boost::shared_ptr、boost::scoped_array、boost::shared_array、 boost::weak_ptr、boost:: intrusive_ptr。你可能会想,如此多的智能指针就为了解 阅读全文
posted @ 2013-08-18 11:41 问笑 阅读(203) 评论(0) 推荐(0)
摘要: auto_ptr是当前C++标准库中提供的一种智能指针,或许相对于boost库提供的一系列眼花缭乱的智能指针, 或许相对于Loki中那个无所不包 的智能指针,这个不怎么智能的智能指针难免会黯然失色。诚然,auto_ptr有这样那样的不如人意,以至于程序员必须像使用”裸“指针那样非常小心的使 用它才能保证不出错,以至于它甚至无法适用于同是标准库中的那么多的容器和一些算法,但即使如此,我们仍然不能否认这个小小的auto_ptr所蕴含的价 值与理念。 auto_ptr的出现,主要是为了解决“被异常抛出时发生资源泄漏”的问题。即如果我们让资源在局部对象构造时分配,在局部对象析构时释放。这样即使在函数. 阅读全文
posted @ 2013-08-18 11:25 问笑 阅读(217) 评论(0) 推荐(0)
摘要: C++中指针申请和释放内存通常采用的方式是new和delete。然而标准C++中还有一个强大的模版类就是auto_ptr,它可以在你不用的时候自动帮你释放内存。下面简单说一下用法。[cpp] view plaincopy用法一:std::auto_ptrm_example(newMyClass());用法二:std::auto_ptrm_example;m_example.reset(newMyClass());用法三(指针的赋值操作):std::auto_ptrm_example1(newMyClass());std::auto_ptrm_example2(newMyClass());m_e 阅读全文
posted @ 2013-08-18 11:17 问笑 阅读(495) 评论(0) 推荐(0)
摘要: 1、每个类必须有一个构造函数,否则没法创建对象; 2、若programer没有提供任何构造函数,则C++提供一个默认的构造函数,该默认构造函数是无参构造函数,它仅负责创建对象,不做任何初始化的工作; 3、只要programer定义了一个构造函数(不管是无参还是有参构造),C++就不再提供默认的默认构造函数。即如果为类定义了一个带参的构造函数,还想要无参构造函数,就必须自己定义; 4、与变量定义类似,在用默认构造函数创建对象时,如果创建的是全局对象或静态对象,则对象的位模式全为0,否则,对象值是随机的。 注:2所述,C++在某些情况下会提供默认构造函数,但在某些情况下并不会自动调用。 实事上,当 阅读全文
posted @ 2013-08-18 11:07 问笑 阅读(733) 评论(0) 推荐(0)
摘要: 代码审核文件 plugins\phpdisk_client\passport.php1234567891011121314151617181920$str = $_SERVER['QUERY_STRING'];if($str){parse_str(base64_decode($str));// 触发函数}else{exit('Error Param');}/*$username = trim(gpc('username','G',''));$password = trim(gpc('password' 阅读全文
posted @ 2013-08-18 09:45 问笑 阅读(464) 评论(0) 推荐(0)
摘要: #include "stdafx.h"#include "stdio.h"/* 冒泡排序日期:2013月8月18IDE:VC6.0*/void Sort(int arr[],int n){ int tmp; for(int i=0; i<n; i++) { for(int j=1; j<n-i; j++) { if ( arr[j] < arr[j-1] ) { tmp = arr[j-1]; arr[j-1] = arr[j]; ... 阅读全文
posted @ 2013-08-18 09:12 问笑 阅读(134) 评论(0) 推荐(0)
摘要: 1.友元函数的简单介绍1.1为什么要使用友元函数在实现类之间数据共享时,减少系统开销,提高效率。如果类A中的函数要访问类B中的成员(例如:智能指针类的实现),那么类A中该函数要是类B的友元函数。具体来说:为了使其他类的成员函数直接访问该类的私有变量。即:允许外面的类或函数去访问类的私有变量和保护变量,从而使两个类共享同一函数。实际上具体大概有下面两种情况需要使用友元函数:(1)运算符重载的某些场合需要使用友元。(2)两个类要共享数据的时候。1.2使用友元函数的优缺点1.2.1优点:能够提高效率,表达简单、清晰。1.2.2缺点:友元函数破环了封装机制,尽量不使用成员函数,除非不得已的情况下才使用 阅读全文
posted @ 2013-08-17 16:17 问笑 阅读(219) 评论(0) 推荐(0)
摘要: 闭包这个概念在很多语言中都有涉及,本文主要谈谈python中的闭包。Python中使用闭包主要是在进行函数式开发时使用。一,定义python中的闭包从表现形式上定义(解释)为:如果在一个内部函数里,对在外部作用域(但不是在全局作用域)的变量进行引用,那么内部函数就被认为是闭包(closure).这个定义是相对直白的,好理解的,不像其他定义那样学究味道十足(那些学究味道重的解释,在对一个名词的解释过程中又充满了一堆让人抓狂的其他陌生名词,不适合初学者)。下面举一个简单的例子来说明。[python] view plaincopy>>>defaddx(x):>>> 阅读全文
posted @ 2013-08-16 17:44 问笑 阅读(418) 评论(0) 推荐(0)
上一页 1 ··· 10 11 12 13 14