写在前面用自己的话分析清楚~智能指针是如何使用的?强指针是如何实现?弱指针如何转化为强指针?智能指针的使用智能指针的使用必须满足如下条件:这个类需要继承自RefBase为什么需要虚析构函数?虚析构函数是为了解决这样的一个问题:基类的指针指向派生类对象,并用基类的指针删除派生类对象。虚函数的出现是为了...
分类:
其他好文 时间:
2014-07-22 22:46:36
阅读次数:
446
shared_ptr智能指针的意思即:boost::shared_ptr是可以智能的管理动态分配的内存资源,几个智能指针可以同时共享一个动态分配的内存的所有权。
下面我们通过一个例子来学习一下它的用法:
注 :使用shared_ptr智能指针,要加入#include 头文件
class example
{
public:
~example() { std::cout "...
分类:
其他好文 时间:
2014-07-21 22:43:47
阅读次数:
297
实际上auto_ptr 只是C++标准库提供的一个类模板,它与传统的new/delete控制内存相比有一定优势,使用它不必每次都手动调用delete去释放内存。当然有利也有弊,也不是完全完美的。
本文从下面的8个方面来总结auto_ptr使用的大部分内容。
1. auto_ptr是什么?
auto_ptr 是C++标准库提供的类模板,auto_ptr对象通过初始化指向由new创建的动态内存,...
分类:
编程语言 时间:
2014-07-21 22:22:38
阅读次数:
276
上篇文章中,我们介绍了为什么应该彻底避免编写拷贝构造函数和赋值操作符。今天这篇我们讨论下为什么应该避免在析构函数中编写代码。即让析构函数为空。
例如:
virtual ~MyClass()
{
}
我们用空析构函数这个术语表示花括号内没有代码的析构函数。
需要编写析构函数可能有如下几个原因:
在基类中,可能需要声明虚拟析构函数,这样就可以使用一个指向基类的指针指向一个派生类的实例...
分类:
其他好文 时间:
2014-07-21 13:33:46
阅读次数:
188
假设有一个如下的MyClass类:
class MyClass
{
public:
//构造函数
//拷贝构造函数
MyClass(const MyClass& that)
: int_data_(that.int_data_),
dbl_data_(that.dbl_data_),
str_data_(that.str_data_)
{
}
//赋值操作符
M...
分类:
其他好文 时间:
2014-07-19 23:46:08
阅读次数:
350
对于tr1::shared_ptr在安装vs同时会自带安装,但是版本较低的不存在。而boost作为tr1的实现品,包含
“Algorithms
Broken Compiler Workarounds
Concurrent Programming
Containers
Correctness and Testing
Data Structures
Domain Specific
Fu...
分类:
其他好文 时间:
2014-07-19 23:18:19
阅读次数:
371
// 智能指针// 作用:// 1. 管理堆内存// 使用约束:// 1. 不能将智能指针对象赋值给智能指针对象// 2. 不能将栈对象取地址后赋值给智能指针// 3. 每一个对应的堆对象地址只能赋值给一个智能指针对象#pragma oncet...
分类:
其他好文 时间:
2014-07-19 17:05:40
阅读次数:
235
写在前面用自己的话解释清楚~智能指针是什么,可分为哪几种类型,各有什么特点,解决了什么问题,怎么解决的?什么是智能指针?智能指针是C++中的一个概念,主要是通过引用计数的方式,解决动态内存的自动释放问题(类似于Java、Python中的垃圾回收)。主要解决程序常见的两个问题:动态的申请的内存没有释放...
分类:
其他好文 时间:
2014-07-19 15:12:31
阅读次数:
352
测试环境:win7, vs2012如果未安装boost,请参考:http://blog.csdn.net/alex_my/article/details/17630685涉及智能指针:shared_ptr, weak_ptr, scoped_ptr, auto_ptr其它:enable_shared...
分类:
编程语言 时间:
2014-07-19 14:15:45
阅读次数:
276