`

使用C++标准类库的智能指针(源代码)

阅读更多

#include "stdafx.h"
#include <iostream>
#include <string>
#include <cstring>
#include <memory>
using namespace std;

class CMyStr
{
public:
	CMyStr(const char* pstr)
	{
		cout << "CMyStr::CMyStr()" << endl;

		m_pData = NULL;
		if (NULL == pstr)
		{			
			cout << "param is null!";
			return;
		}

		int nLen = strlen(pstr) + 1;
		m_pData = new char[nLen];
		if (NULL == m_pData)
		{
			cout << "get memory failed..." << endl;
			return;
		}

		strncpy(m_pData, pstr, nLen);
	}

	~CMyStr()
	{
		cout << "CMyStr::~CMyStr()" << endl;
		if (NULL != m_pData)
		{
			delete[] m_pData;
			m_pData = NULL;
		}
	}

	const char* c_str()
	{
		return m_pData;
	}

private:
	char*	m_pData;
};

int main()
{
	auto_ptr<CMyStr> pStr(new CMyStr("hello, andylin!"));
	cout << pStr->c_str() << endl;

	auto_ptr<string> pstr2(new string("I love my baby so much!"));
	cout << pstr2->c_str() << endl;

	return 0;
}
 
分享到:
评论

相关推荐

    基于C++/CLI的VB.NET/C#内存指针访问类库(无代码)

    大家知道,VB.NET/C#在指针的使用上是受到很多限制的。虽然C#提供了unsafe代码的指针访问,但还是有不少限制。.NET Framework的类库提供了GCHandle类库和Marshal命名空间...本资源是编译好的DLL库文件,不包含源代码。

    C++标准库介绍.pdf

     Boost库是个经过千锤百炼、可移植、提供源代码C库作为标准库后备是C标准化进程发动机的 Boost库由 C标准委员会库工作组成员发起在C社区中影响甚大其成员已近2000人 Boost库为我们带来了最新、最酷、最 实用技术是...

    JAVA上百实例源码以及开源项目源代码

    Java从网络取得文件 1个目标文件 简单 Java从压缩包中提取文件 1个目标文件 简单 Java存储与读取对象 1个目标文件 如题 Java调色板面板源代码 1个目标文件 摘要:Java源码,窗体界面,调色板 使用Java语言编写的一款...

    Beyond.the.C.plus.plus.Standard.Library.An.Introduction.to.Boost

    是C++标准库的源代码吗?不是,如果您读过这些代码,就会发现这些代码要么是各种实现独特的表达方式让人摸不着头脑,要么是恐怖的代码风格(例如到处是下划线)憋得让人难受。Boost库的代码则相当清晰、注释合理、命名...

    [C++.核心思想] 中文版

    本书运用现代工具对计算机科学进行传统的介绍。作为计算机领域的科学家,很幸运能够给学生介绍一种易于实践...此外,在第18章中通过使用一个类似于Microsoft基本类库(MFC)的开放源代码工具包来介绍图形用户界面编程。

    C++Builder 6.0设计师之路 pdf版

    还提供了上百个如何在vcl环境下使用c++ builder功能的技巧、具有实践性的建议以及数百个可以立即运行的重要解决方案的详细代码,内容主要涉及以下几个方面:标准c++基础知识、vcl库、windows窗体、图形编程、多线程...

    新手学习C++入门资料

    下面给出使用了无名参数的C++函数代码: int fun(int x,int) //注意不同点 { return x*2; } (二) 函数的默认参数 C++函数的原型中可以声明一个或多个带有默认值的参数。如果调用函数时,省略了相应的实际参数...

    精通MFC (光盘) 源代码

    7.1 处理标准窗口消息 7.1.1 处理WM_CREATE消息 7.1.2 处理WM_DESTROY消息 7.1.3 处理WM_NCDESTORY消息 7.1.4 处理WM_CLOSE消息 7.2 处理命令消息 7.3 处理反射消息 7.4 投递和发送消息 7.4.1 投递和发送...

    Visual C++实践与提高-COM和COM+篇『PDF』

    5.4 在Visual C++中使用代码组件 5.4.1 利用OLE/COM Object Viewer查看组件信息 5.4.2 利用COM库函数使用代码组件——例程VCAuotCom 5.4.3 通过ClassWizard使用代码组件——例程VCAuotClw 5.4.4 利用#import指令...

    毕业设计:ASP.NET基于WEB的工作计划流程管理系统的设计与实现(源代码+论文)

    C#的语法与C++基本相同,最大的变化是没有了C和C++中的指针,C#只支持其中的一个“.”。C#具有面向对象的编程语言所应用的一切特性,如封装、继承和多态。在C#的类型系统中,每种类型都可以看作一个对象,但C#只允许...

    java培训地址.xlsx

    提供了丰富的类库和API文档,以及第三方开发包工具包,还有大量的基于Java的开源项目,帮助程序设计人员参考学习,JDK就是开放的源代码之一,读者可以通过分析项目的源代码,来提高自己的编程水平。 ——————...

    McGraw C++程序调试实用手册

    14.2.2 源代码文件DLLDemoView.cpp 14.3 更加仔细地查看 14.3.1 远程调试 14.3.2 有问题的代码 14.3.3 改正后的代码 14.4 小结 第15章 使用ActiveX控件工作 15.1 开发一个 ActiveX控件 15.1.l 使用...

    Visual C++开发经验技巧宝典(第3章)

    0152 如何使用源代码浏览工具 74 0153 在一个工作区中管理多个工程 75 0154 如何将控件分组 75 0155 注册自己的对话框模板 75 0156 如何彻底地从工程中删除一个类 75 0157 在类向导中处理没有发现的窗口...

    gsoap 2.8 (SOAP/XML 关于C/C++ 语言的自动化实现工具内附 CSharp webservice例子,及GSOAP client和server例子)

    C/C++源代码的存根例程将通过预编译器自动实现。同时,每个远程方法的程序框架也被自动生成了,它可以用来建立SOAP服务  端程序应用。  SOAP服务的输入输出参数可以是简单的数据类型或复杂的数据结构,可以由WSDL...

    Visual C++编程技巧精选500例.pdf

    087 如何使用代码获取工具栏的指针? 088 如何在对话框程序中加入工具栏? 089 如何控制工具栏的停靠位置? 090 如何使用对话栏? 091 如何增加状态栏窗格? 092 如何更新状态栏窗格? 093 如何关闭默认状态栏? 094 如何在...

    Visual C++ 数据库系统开发完全手册.part2

    11.6.2 使用ADO连接数据源前的准备工作 11.6.3 Connection与Recordset 11.6.4 打开数据与关闭数据连接 11.7 如何使用ADO 11.7.1 如何打开记录集 11.7.2 怎样使用记录集 11.8 重新封装ADO 11.8.1 RxADO类的制作方法 ...

Global site tag (gtag.js) - Google Analytics