首页 > 其他分享 >智能指针的思路

智能指针的思路

时间:2024-06-14 11:04:11浏览次数:20  
标签:name age 智能 num 内存 思路 指针

目录

前言

一、智能指针是什么?

二、智能指针代码步骤

1.创建一个基本的类,这个类有你想实现的功能

2.智能指针类

3.整体代码

总结


前言

        在日常的类应用场景中,我们会很多时候涉及到申请内存new关键词和清空内存delete的使用,而我们在很多时候会在申请内存后,忘记了或者没有及时清理内存,从而会引发很多意想不到的问题,这里我们引入智能指针。

一、智能指针是什么?

        在C++中,智能指针是一种用来自动管理对象内存的指针类型。它们提供了一种自动化的方式来分配和释放对象的内存,从而减少内存泄漏和悬空指针的风险。

        智能指针的工作原理是通过包装原始指针并在适当的时候自动调用删除器,来管理分配的内存。删除器是一个函数对象,它负责释放指针所指向的内存。

        使用智能指针可以简化内存管理,并减少手动释放内存和悬空指针的风险,从而提高代码的安全性和可靠性。

二、智能指针代码步骤

1.创建一个基本的类,这个类有你想实现的功能

代码如下(示例):

class num_1   //普通类
{
    public:
        int age;  //年龄
        string name;    //姓名
        num_1(){} //默认构造
        num_1(string name,int age) 有参构造
        {
            this->name = name;
            this->age = age;
        }
};

2.智能指针类

代码如下(示例):

class num_2   //智能指针类
{
    public:
        num_1 *p;   //声明一个num_1的对象
        num_2(){}  //默认构造函数
        num_2(num_1 *p)  //有参构造函数传入一个num_1类型的对象
        {
            this->p = p;   //赋值
        }

        ~num_2()     //自动帮我们析构 delete 对象
        {
            if(this->p)
            {
                delete this->p;
                this->p = NULL;
            }
        }
    
        num_1 *operator->()   //重载->
        { 
           return this->p;
        }
};

3.整体代码

#include <iostream>   //标准的输入输出流
#include<string.h>    
#include<stdlib.h>
#include<cmath>
#include<time.h>
#include<string>
using namespace std;    

class num_1   //普通类
{
    public:
        int age;
        string name;
        num_1(){}
        num_1(string name,int age)
        {
            this->name = name;
            this->age = age;
        }
};

class num_2   //智能指针类
{
    public:
        num_1 *p;   //声明一个num_1的对象
        num_2(){}  //默认构造函数
        num_2(num_1 *p)  //有参构造函数传入一个num_1类型的对象
        {
            this->p = p;   //赋值
        }

        ~num_2()     //自动帮我们析构 delete 对象
        {
            if(this->p)
            {
                delete this->p;
                this->p = NULL;
            }
        }
    
        num_1 *operator->()   //重载->
        { 
           return this->p;
        }
};

int main(void)
{
    num_2 p1(new num_1("吴清华",22));
    cout << "p1姓名为 : " << p1->name << "   p1年龄为:" << p1->age << endl;
    return 0
}

总结

        在智能指针类中,通过声明一个目标类的对象来保持main函数中传入的目标类对象,再通过析构函数每次都可以实现智能delete。

标签:name,age,智能,num,内存,思路,指针
From: https://blog.csdn.net/weixin_47378530/article/details/139673951

相关文章

  • 传统行业龙头企业与定制化AI智能名片S2B2C商城小程序:构建数字化领导地位
    一、引言随着数字化浪潮的推进,传统行业龙头企业正面临着前所未有的挑战与机遇。在社交零售电商平台蓬勃发展的背景下,如何有效利用这些平台构建自己的数字化领导地位,成为传统行业龙头企业亟待解决的问题。本文将探讨企业定制开发AI智能名片S2B2C商城小程序的重要性,并分析其如何......
  • 单例模式思路
    文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言        单例模式是一种常用的设计模式,用于确保一个类只有一个实例,并提供全局访问点。一、单例模式是什么?        单例模式是一种设计模式,用于确保一个类只有一个实例对象,......
  • 数据质量守护者:数据治理视角下的智能数据提取策略
    一、引言在信息化和数字化高速发展的今天,数据已成为企业决策、运营和创新的核心要素。然而,随着数据量的快速增长和来源的多样化,数据质量问题逐渐凸显,成为制约企业数据价值发挥的关键因素。数据治理作为确保数据质量、提升数据价值的重要手段,其核心任务之一就是实现高效、准确......
  • 大模型应用之路:从提示词到通用人工智能(AGI)
    大模型在人工智能领域的应用正迅速扩展,从最初的提示词(Prompt)工程到追求通用人工智能(AGI)的宏伟目标,这一旅程充满了挑战与创新。本文将探索大模型在实际应用中的进展,以及它们如何为实现AGI铺平道路。基于AI大模型的推理功能,结合了RAG(检索增强生成)、智能体(Agent)、知识库、向量数据库......
  • 智能座舱SOC选型指南
    智能座舱的SoC选型指南在现代汽车中,智能座舱(SmartCockpit)逐渐成为一个重要的技术领域,为驾驶者和乘客提供了增强的体验和便利性。选择合适的系统级芯片(SoC)是打造高效智能座舱的关键之一。本文将从多个维度探讨智能座舱SoC的选型,重点介绍高通的SA8295平台、联发科的MT2712和......
  • 免费视频编辑神器 Tailor:智能裁剪、生成与优化!
    TailorTailor是令人惊叹的视频编辑神器!其人脸和语音剪辑精准无比,人脸识别能锁定人物画面,语音捕捉和裁剪独具魅力。视频生成方面,口播生成赋予图像灵魂,字幕生成准确契合,色彩生成让黑白鲜活,音频生成创造无限可能。优化上,背景更换如入奇幻世界,流畅度与清晰度也极佳。Tailor......
  • 智能座舱软件性能与可靠性的评估和改进
    随着智能汽车的不断发展,智能座舱在性能与可靠性上暴露出体验不佳、投诉渐多的问题,本文从工程化的角度简述了如何构建智能座舱软件的评估框架,以及如何持续改进其性能和可靠性。  1.智能座舱软件性能和可靠性表现不佳据毕马威发布的《2023智能座舱白皮书-聚焦电动化下半场......
  • 二进制翻转、结构体指针
    试写一个函数,传入一个参数unsignedcharnum,把num按位进行整个数值翻转。规则:使用位运算,不能另外使用变量存储,写出最优的方案。例:num二进制为10010111;翻转后num二进制是11101001unsignedcharreverseBitsChar(unsignedcharch){    ch=(ch&0x55)<<1|(ch>>1)......
  • 牛客周赛46(思路待补)
    比赛链接:牛客周赛46赛时感受    本场参加的是内测,多亏了内测群的佬提供的思路,得以AK。    ABC都是简单的签到题,D稍微需要分类一下,EF有点算法知识,E可以使用前缀和+二分搜索过掉,但是听说好像还能使用离散化树状数组等等,F是数学知识,隔板法和求质数、求组合。 ......
  • 智慧工地:构筑未来建筑的智能脉络
    在科技日新月异的今天,智慧城市的建设已不再局限于城市生活的方方面面,而是深入到了城市发展的每一个细胞——工地。本文旨在深度剖析智慧工地的核心价值、关键技术及对建筑业转型升级的深远影响。一、智慧工地:定义与愿景智慧工地是指运用物联网、大数据、云计算、人工智能等现......