关于autoptr】的更多相关文章

参考自: http://www.cppblog.com/expter/archive/2009/03/29/78270.html auto_ptr是什么. 解释1.auto_ptr是一个管理指针的对象,防止内存泄漏和便于程序员编程时的内存管理解释2.auto_ptr所做的事情,就是动态分配对象以及当对象不再需要时自动执行清理.值得注意的是auto_ptr是一个"对象" 而非指针. 原理(摘自EFFECTIVE C++ 条款13):当把资源放进对象内,当控制流离开函数,对象的析构函数会自…
一般的智能指针都是通过一个普通指针来初始化,所以很容易写出以下的代码: #include <iostream> using namespace std; int func1(){ //返回一个整数的函数 } void func2(AutoPtr<int*> ptr,int t){ //一些操作 } int main(){ func2(AutoPtr<int*>(new int(5)),func1()); //其他操作 } 乍一看,这段代码好像没有什么问题,但实则暗藏隐患…
核心Core: Version.h:版本控制信息,宏POCO_VERSION,值格式采用0xAABBCCDD,分别代表主版本.次版本.补丁版本.预发布版本: Poco.h:简单地包含了头文件Foundation.h: Foundation.h:使用其他任何Foundation模块前需要包含的头文件,主要定义库导出宏POCO_DLL.Foundation_API以及自动连接相应配置正确的库引用文件lib:包含库配置文件Config.h: 平台相关的Platform.h以及各个平台相应的文件Plat…
说明 为何要写这篇文章 ,之前看过阿二的梦想船的<Poco::TCPServer框架解析> http://www.cppblog.com/richbirdandy/archive/2010/09/10/123994.html 无奈代码太多,看起繁琐.所以 准备 以流程图简化,便于理解.也方便自己以后使用. 本文内容 是基于window api分析的. 本文的poco是1.4.6p4 (2014-04-18)版本的. 虽然现在poco版本是1.6 但调用改动不大. poco下载地址:http:/…
C++相比Java等含有gc的语言来说,内存管理方面(也包括资源管理)比较令人头疼.一些初级程序员,甚至是一些经验丰富的老程序员,也会经常在资源管理上犯错.这时候就需要一个能够自动管理资源的东西(gc),但是由于C++本身没有提供,那么只有我们自己实现了. 本节我不打算直接按照<Effective C++>本节的内容进行写作,而是手动实现一个智能指针(想想还有些小激动呢^_^). 首先,我们先编写一个测试代码(先写测试代码总是一个好习惯): //test.h #pragma once #inc…
类的成员变量,成员函数,成员类型,以及基类中如果包含参数化的类型,那么该类就是一个类模板   1.定义 template<typename 类型形参1, typename 类型形参2,...> class 类模板名[:基类]{ 成员变量 成员函数 成员类型 };   2.使用 类模板名<类型实参1,类型实参2,...> 对象; 类模板名<类型实参1,类型实参2,...> &引用 = 对象; 类模板名<类型实参1,类型实参2,...> *指针 = &a…
1 -> *运算符重载 //autoptr.cpp     #include<iostream> #include<string> using namespace std;   struct date{     int year;     int month;     int day; };   struct Person{     string name;     int age;     bool gender;     double salary;     date b…
1.程序员明确的进行内存释放 对于c++程序员,最头脑的莫过于对动态分配的内存进行管理了.c++在堆上分配的内存,需要程序员负责对分配的内存进行释放.但有时内存的释放看起来并不件很轻松的事,如下程序 void func() { int *p = new int(0); if(一些判断) { return; } p = new int(1); delete p; } 这个函数没有任何意义,只为说明问题.func函数至少有三处问题.1.一旦if的判断条件成立,就会立马执行返回语句.此时p所指向的内存…
Item2:尽量以const,enum,inline替换#define 原因:1, #define ASPECT_RATIO 1.63 编译错误时产生魔数,应以const double Aspect_Ratio = 1.63替换 2, #define不能提供作用域,如某个类的常量 class GamePlayer{ private: static const int = 1024; int scores[NumTruns]; }; 上面的类也可以通过下面的enum实现, 但是此种实现更像是def…
引言 C扩展也称C++, 是一个复(za)杂(ji)优(ken)秀(die)的语言. 本文通过开发中常用C++方式来了解和回顾C++这么语言. C++看了较多的书但还是觉得什么都不会. 只能说自己还付出太少,哎. 在引言部分我们先感受C++类的设计. 有个如下需求, 设计一个简单的日志系统. 先看下面 LogSimple.hpp #ifndef _HPP_LOGSIMPLE #define _HPP_LOGSIMPLE #include <iostream> using namespace s…