既然“指针”的使用者一不小心就可能导致内存泄漏,那么我们如何能够使得指针的使用变得更安全呢?从C++面向对象的角度分析,我们有没有可能将“指针”封装起来,使得用户不直接接触指针,而使用一个封装后的对象来替代指针的操作呢?
答案是显然的,“智能指针”(smart pointer)正解决这类问题,尤其是在防止内存泄漏方面做得非常突出。C++标准库std中提供了一种“智能指针类”名为"...
分类:
编程语言 时间:
2014-06-15 15:04:11
阅读次数:
352
Java 中数组声明后不可修改 –跟C一样 ,C中往往会增加定义HASHTABLE,链表等结构来实现动态的数组 但在java中,已经有现成的,称为集合 Collection (interface,有迭代器)├List (interface)│├LinkedList (class)│├ArrayLis...
分类:
编程语言 时间:
2014-06-15 13:12:19
阅读次数:
210
在敲机房收费系统的时候,因为用三层的思想时需要用到实体类,最麻烦的是不断的来定义实体的属性值,真实烦人,想一想有没有好的方法来操作呢? 注意实体的属性是与数据库中表的字段是相互对应的。 从网上查资料发现了代码生成器这个好东西,网上有免费的,大家可以学习一下,以后在做的时候就方便多了,但是更重要的是要知道原理,即本质。在这里小编就教大家来自制代码生成器,最简陋的操作,意在告诉大家代码生成器背后...
分类:
其他好文 时间:
2014-06-15 10:07:25
阅读次数:
194
当内部函数创建时,静态的保存了父作用域链,即使父函数执行完毕,其变量对象(这里面保存着我们想要的父变量)一直保存在内部函数的作用域链中。内部函数不再被调用之前,这个活动对象一直在内存中(通俗讲就是这时候父函数的变量对象和内部函数绑定在一起了)。这种机制取名为闭包。简洁地说:闭包就是有权访问其他函数作...
分类:
其他好文 时间:
2014-06-14 21:40:12
阅读次数:
216
首先对于vector而言,添加和删除操作可能使容器的部分或者全部迭代器失效。那为什么迭代器会失效呢?vector元素在内存中是顺序存储,试想:如果当前容器中已经存在了10个元素,现在又要添加一个元素到容器中,但是内存中紧跟在这10个元素后面没有一个空闲空间,而vector的元素必须顺序存储一边索引访问,所以我们不能在内存中随便找个地方存储这个元素。于是vector必须重新分配存储空间,用来存放原来...
分类:
编程语言 时间:
2014-06-14 13:04:47
阅读次数:
338
(function(c){for(i=1;i<=9;i++){var s='';for(j=1;j<=i;j++){s+=i+'X'+j+'='+i*j+'\t';}c.debug(s);}})(console)...
分类:
Web程序 时间:
2014-06-14 12:56:33
阅读次数:
216
在OC中我们定义一个Blocks是这样定义的:
typedef void (^ZWProgressHUDCompletionBlock)();
在Swift中定义一个闭包是这样的:
typealias ZWProgressHUDCompletionBlock=()->Void
转载请注明!!!欢迎大家加入交流群:爱疯、爱Coding:209476515...
分类:
其他好文 时间:
2014-06-14 10:48:23
阅读次数:
223
利用了大约一个多小时来搞明白OC中Blocks反向传值和Swift中Closure反向传值的差别,下面直接贴上代码:
一、第一个界面
// Created by 秦志伟 on 14-6-13.
import UIKit
class ZWRootViewController: UIViewController {
init(nibName nibNameOrNil: String?...
分类:
其他好文 时间:
2014-06-14 10:00:19
阅读次数:
451
模式定义
迭代器模式提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示。
迭代器模式让我们能游走于聚合内的每一个元素,而又不暴露其内部的表示。把游走的任务放在迭代器上,而不是聚合上。这样简化了聚合的接口和实现,也让责任各得其所。
模式结构:
Iterator:迭代器定义访问和遍历元素的接口
Conc...
分类:
编程语言 时间:
2014-06-13 21:48:10
阅读次数:
473