一、智能指针1.类类型对象,在其内部封装了一个普通指针。当智能指针对象因离开作用域而被析构时,其析构函数被执行,通过其内部封装的普通指针,销毁该指针的目标对象,避免内存泄露。2.为了表现出和普通指针一致的外观和行为,重载了解引用运算符(*)和间接成员访问运算符(->)函数,令其使用者可以将一个智能指...
分类:
其他好文 时间:
2015-10-15 22:17:41
阅读次数:
255
1. explict 阻止隐式类型转换2.引用传递好于值传递3.对内置类型或STL 传值更好4.阻止默认构造函数:将其声明为private而不定义;或继承一个这样的基类5.虚函数的目的是允许派生类的实现得以客制化,在不同的基类中有不同的实现代码。任何类只要带有虚函数都几乎确定应该也有一个虚析构函数6...
分类:
编程语言 时间:
2015-10-15 21:55:37
阅读次数:
194
刚开始的时候一直不知道怎么回事,不过幸好我有在每个class 的析构时都打印一条信息。这个时候发现我的一个tcp_connection (就是自定义的一个连接类) 在最后才被析构。所以感觉这里可能出了问题。由于tcp_connection 是派生自boost::enable_shared_from_...
分类:
其他好文 时间:
2015-10-15 12:48:49
阅读次数:
249
原文:http://noalgo.info/382.htmlString是C++中的重要类型,程序员在C++面试中经常会遇到关于String的细节问题,甚至要求当场实现这个类。只是由于时间关系,可能只要求实现构造函数、析构函数、拷贝构造函数等关键部分。String的实现涉及很多C++的基础知识、内存...
分类:
编程语言 时间:
2015-10-14 00:15:50
阅读次数:
391
1. 垃圾回收只与内存有关在Java中,我们new完对象之后,垃圾回收器负责回收无用的对象占据的内存资源。这与C++不同,在C++中,准许使用局部对象,回收对象时候,需要用到finalize()析构函数。C++的对象创建在堆栈中,而Java对象创建在堆中,所以我们创建完对象之后,Java的垃圾回收器...
分类:
编程语言 时间:
2015-10-14 00:05:12
阅读次数:
203
原档:https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Deinitialization.html#//apple_ref/doc/...
分类:
编程语言 时间:
2015-10-13 12:01:07
阅读次数:
232
一、main结束 不代表整个进程结束 (1)全局对象的构造函数会在main 函数之前执行, 全局对象的析构函数会在main函数之后执行; 用atexit注册的函数也会在main之后执行。 (2)一些全局变量、对象和静态变量、对象的空间分配和赋初值就是在执行main函数之前,而main函数执行完后,还要去执行一些诸如释放空间、释放资源使用权等操作 (3)进程...
分类:
其他好文 时间:
2015-10-09 18:24:23
阅读次数:
156
1. 析构函数 1. ? ?析构函数没有参数,不能被重载,因此一个类只能有一个析构函数。如果用户没有定义,那么编译器会自动生成。 2. ?static 局部对象在函数调用结束时并不销毁,因此也不调用析构函数, ? ? ...
分类:
其他好文 时间:
2015-10-07 13:34:49
阅读次数:
179
1. 智能指针(如标准库的auto_ptr,shared_ptr,weak_ptr,boost的scoped_ptr等)主要用于动态内存的管理,同时提供给用户与内置指针一样的使用方法,本条款主要涉及智能指针在构造与析构,复制和赋值,解引等方面的注意点,而非智能指针的实现细节.2. 智能指针的构造,赋...
分类:
编程语言 时间:
2015-10-06 23:38:32
阅读次数:
391
在构造以及析构函数期间不要调用virtual函数,因为这类调用从不下降到derived class中。例如说下面这个例子: 1 class Transaction{ 2 public: 3 Transaction(); 4 virtual void logTransactions()...
分类:
其他好文 时间:
2015-10-05 12:50:40
阅读次数:
139