cc40a_demo_Cpp_智能指针c++_txwtech
//40_21days_Cpp_智能指针c++_cc40a_demo.cpp_txwtech
//智能指针、auto_ptr类
//*常规指针-容易产生内存泄漏,内存被占满,程序就死机,或者系统死机
//*智能指针
//-》自动动手设计智能指针--很难!
//-----深度复制、写时复制、引用计数、引用链接、
//->使用std::auto_ptr智能指针--用在(破坏性复制)-功能简单
//->使用Boost智能指针,学习boost库-----------------重点学习
//->使用ATL框架中的智能指针MFC,VC++中-----------------重点学习
//如CComPtr,CComQIPtr等等。。。
//40_21days_Cpp_智能指针c++_cc40a_demo.cpp_txwtech //智能指针、auto_ptr类
//*常规指针-容易产生内存泄漏,内存被占满,程序就死机,或者系统死机
//*智能指针
//-》自动动手设计智能指针--很难!
//-----深度复制、写时复制、引用计数、引用链接、
//->使用std::auto_ptr智能指针--用在(破坏性复制)-功能简单
//->使用Boost智能指针,学习boost库-----------------重点学习
//->使用ATL框架中的智能指针MFC,VC++中-----------------重点学习
//如CComPtr,CComQIPtr等等。。。
#include <iostream>
//#include <memory> //auto_ptr
#include "smart_point.h"
using namespace std;
class Dog
{ };
//c++没有垃圾回收功能,所有用智能指针去解决这个问题
void demo2()
{
auto_ptr<double> pd(new double);//模板做的一个类,函数结束前,就不用delete
*pd = 28.6;
std::auto_ptr<Dog> pDog(new Dog());
//测试自己做的智能指针smart_point.h/示范,大概的样子,实际不能用
smart_pointer<Dog> spDog(new Dog());//实际不能用
std::cout <<"demo2: "<< *pd << std::endl; }
void demo1()
{
double d;
d = 25.6;
double *pd = new double;//堆上动态分配内存
*pd = 25.6;
std::cout << d << std::endl;
//if (1)
//throw exception();//抛出异常后,无法执行到delete pd指针
delete pd;
return;
} int main()
{
demo1();
demo2();
return ;
}
#include "smart_point.h"
#pragma once
template <typename T>
class smart_pointer
{
//测试自己做的智能指针smart_point.h/示范,大概的样子
private:
T* m_pRawPointer;
public:
smart_pointer(T* pData) :m_pRawPointer(pData) {}
//复制构造函数
smart_pointer(const smart_pointer & anotherSP);
//赋值操作符
smart_pointer& operator=(const smart_pointer & anotherSP);
//间接引用操作符
T& operator*() const
{
return *(m_pRawPointer);
}
T* operator->() const
{
return m_pRawPointer;
}
};
cc40a_demo_Cpp_智能指针c++_txwtech的更多相关文章
- enote笔记法使用范例(2)——指针(1)智能指针
要知道什么是智能指针,首先了解什么称为 “资源分配即初始化” what RAII:RAII—Resource Acquisition Is Initialization,即“资源分配即初始化” 在&l ...
- C++11 shared_ptr 智能指针 的使用,避免内存泄露
多线程程序经常会遇到在某个线程A创建了一个对象,这个对象需要在线程B使用, 在没有shared_ptr时,因为线程A,B结束时间不确定,即在A或B线程先释放这个对象都有可能造成另一个线程崩溃, 所以为 ...
- C++智能指针
引用计数技术及智能指针的简单实现 基础对象类 class Point { public: Point(int xVal = 0, int yVal = 0) : x(xVal), y(yVal) { ...
- EC笔记:第三部分:17、使用独立的语句将newed对象放入智能指针
一般的智能指针都是通过一个普通指针来初始化,所以很容易写出以下的代码: #include <iostream> using namespace std; int func1(){ //返回 ...
- 智能指针shared_ptr的用法
为了解决C++内存泄漏的问题,C++11引入了智能指针(Smart Pointer). 智能指针的原理是,接受一个申请好的内存地址,构造一个保存在栈上的智能指针对象,当程序退出栈的作用域范围后,由于栈 ...
- 智能指针unique_ptr的用法
unique_ptr是独占型的智能指针,它不允许其他的智能指针共享其内部的指针,不允许通过赋值将一个unique_ptr赋值给另一个unique_ptr,如下面错误用法: std::unique_pt ...
- 基于C/S架构的3D对战网络游戏C++框架_05搭建系统开发环境与Boost智能指针、内存池初步了解
本系列博客主要是以对战游戏为背景介绍3D对战网络游戏常用的开发技术以及C++高级编程技巧,有了这些知识,就可以开发出中小型游戏项目或3D工业仿真项目. 笔者将分为以下三个部分向大家介绍(每日更新): ...
- C++ 引用计数技术及智能指针的简单实现
一直以来都对智能指针一知半解,看C++Primer中也讲的不够清晰明白(大概是我功力不够吧).最近花了点时间认真看了智能指针,特地来写这篇文章. 1.智能指针是什么 简单来说,智能指针是一个类,它对普 ...
- C++11智能指针读书笔记;
智能指针是一个类对象,而非一个指针对象. 原始指针:通过new建立的*指针 智能指针:通过智能指针关键字(unique_ptr, shared_ptr ,weak_ptr)建立的指针 它的一种通用实现 ...
随机推荐
- Mysql与Mysqli的区别及特点
1)PHP-MySQL 是 PHP 操作 MySQL 资料库最原始的 Extension ,PHP-MySQLi 的 i 代表 Improvement ,提更了相对进阶的功能,就 Extension ...
- 在Cent OS云服务器上部署基于TP5后端代码踩坑记录_艾孜尔江撰
推荐使用镜像安装Cent OS系统,或者在纯净安装完成之后在完成Apache+MySQL+PHP的时候不要每个单独安装,因为这样会出一些三者之间版本不配的问题,网上各种说法都有,查起来也非常困难,版本 ...
- centos安装以及网络配置
Linux安装 1.Linux安装完成后 第一个问题就是网络不通的问题 ,问题图片如下: 解决办法: 三种网络模式: 桥接模式:虚拟机和宿主机是兄弟关系,统一由宿主机连接的路由器分发ip NAT模式: ...
- 二、Spring装配Bean
内容 声明bean 构造器注入和Setter方法注入 装配Bean 控制bean的创建和销毁 关键词 装配(wiring) 组件扫描(component scanning) 自动装配(AutoWiri ...
- G1 垃圾回收器简单调优
G1: Garbage First 低延迟.服务侧分代垃圾回收器. 详细介绍参见:JVM之G1收集器,这里不再赘述. 关于调优目标:延迟.吞吐量 一.延迟,单次的延迟 单次的延迟关系到服务的响应时延, ...
- 安装superset遇到的坑
实验环境:ubuntu16.04 python环境: 3.6.7 安装参考:https://superset.incubator.apache.org/installation.html 特别提醒: ...
- switch-case与if-else的转换
对学会成绩大于60分的,输出合格,低于60分的输出不合格 import java.util.Scanner; public class TestSwitch3 { public static void ...
- 【图机器学习】cs224w Lecture 13 & 14 - 影响力最大化 & 爆发检测
目录 Influence Maximization Propagation Models Linear Threshold Model Independent Cascade Model Greedy ...
- 02)php基础知识
综述 学习网址 菜鸟教程-PHP 所有学习内容皆来自以上网站. 基础 语法 PHP 脚本以 结束; PHP 文件的默认文件扩展名是 ".php". <?php echo &q ...
- 基于S7-PLCSIM Advanced搭建S7通信仿真环境
写在前面: 之前有专门讲过一期如何搭建西门子PLC的S7通信仿真环境,感兴趣的可以点击查看:戳↓ 1.基于TIA搭建西门子PLC仿真环境及通信方案-联合出品 2.手把手教你搭建西门子PLC仿真环境 那 ...