C++ 44 之 指针运算符的重载

news2024/10/4 22:13:27

 

#include <iostream>
#include <string>
using namespace std;

class Students04{
public:
    int m_age;
    Students04(int age){
        this->m_age = age;
    }
    void showAge(){
        cout << "年龄是: " << this->m_age << endl;
    }
    ~Students04(){
        cout << "析构" << endl;
    }
};

// 利用智能指针管理new出来的students04对象的delete操作
class SmartPoint{
public:
    Students04* m_stu;
    SmartPoint(Students04* stu){
        this->m_stu = stu;
    }
    ~SmartPoint(){
        if(this->m_stu){
            delete this->m_stu;
            this->m_stu = NULL;
            cout << "智能指针析构"<< endl;
        }
    }

    // 重载->
    Students04* operator->(){
        return this->m_stu;
    }
     // 重载*
    Students04& operator*(){
        return *(this->m_stu);
    }

};

int main()
{
    // 堆中申请空间
    // Students04* stu1 = new Students04(18); // 显示法
    // stu1->showAge();  //方法1:
    // (*stu1).showAge();  //方法2:解引用法
    // delete stu1;

    
    SmartPoint sp(new Students04(18));  // sp 是个实例化对象 对象不是指针,不能用->符号,所以要重载 sp->

    // sp 无法实现指针效果,再次重载->
    // sp 是个实例化对象 对象不是指针,不能用->符号,所以要重载 sp->
    // sp->->showAge();  // sp->  == this->m_stu
    // this->m_stu->showAge();
    // sp->->showAge();
    // 系统认为太丑了,所以两组箭头间化为1组
    sp->showAge();

    // sp无法实现指针效果,再次重载*
    (*sp).showAge();


    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1827121.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

155. 最小栈 力扣 python 空间换时间 o(1) 腾讯面试题

设计一个支持 push &#xff0c;pop &#xff0c;top 操作&#xff0c;并能在常数时间内检索到最小元素的栈。 实现 MinStack 类: MinStack() 初始化堆栈对象。void push(int val) 将元素val推入堆栈。void pop() 删除堆栈顶部的元素。int top() 获取堆栈顶部的元素。int get…

RestTemplate远程请求的艺术

1 简说 编程是一门艺术,追求优雅的代码就像追求优美的音乐。 很多有多年工作经验的开发者,在使用RestTemplate之前常常使用HttpClient,然而接触了RestTemplate之后,却愿意放弃多年相处的“老朋友”,转向RestTemplate。那么一定是RestTemplate有它的魅力,有它的艺术风范。…

CCAA质量管理【学习笔记】​​ 备考知识点笔记(三)质量管理方法与常见工具

第二部分 质量管理领域专业知识 《质量管理体系基础考试大纲》中规定的考试内容&#xff1a; 3.2 质量管理领域专业知识 a) 了解质量管理方法与工具相关知识&#xff0c;包括&#xff1a; 质量管理方法与工具的内涵与作用、发展历程与应用现状、分类与选择常用的应用软件…

使用 Vue CLI 脚手架生成 Vue 项目

最近我参与了一个前端Vue2的项目。尽管之前也有过参与Vue2项目的经验&#xff0c;但对一些前端Web技术并不十分熟悉。这次在项目中遇到了很多问题&#xff0c;所以我决定借此机会深入学习Vue相关的技术栈。然而&#xff0c;直接开始深入钻研这些技术可能会显得枯燥&#xff0c;…

随笔-来了,安了

依照领导定的规矩&#xff0c;周五又去了分公司&#xff0c;赋能一线去了。到了地方就是开会->现场解决问题->干饭->开会过需求、提供解决方案&#xff0c;充实得厉害。强度也不小&#xff0c;中午干的一大碗饭&#xff0c;到五点就饿了。 六点带着分公司催着上线的需…

jupyter notebook中使用不同的anaconda环境及常用conda命令

conda命令 在jupyter notebook中使用不同的anaconda环境其他常用conda命令 在jupyter notebook中使用不同的anaconda环境 创建环境 myenvname 需替换为自己的环境名称 conda create --name myenvname python3.7激活环境 conda activate myenvname 在该环境中安装Jupyter N…

MongoDB~事务了解;可调一致性模型功能与因果一致性模型功能分析

背景 MongoDB 从 3.0版本引入 WiredTiger 存储引擎之后开始支持事务&#xff0c;MongoDB 3.6之前的版本只能支持单文档的事务&#xff0c;从 MongoDB 4.0版本开始支持复制集部署模式下的事务&#xff0c;从 MongoDB 4.2版本开始支持分片集群中的事务。 根据官方文档介绍&…

C++11 move左值转化为右值

单纯的左值只能用左值引用和右值只能用右值引用有些局限&#xff0c;在一些情况下&#xff0c;我们也需要对左值去调用右值引用&#xff0c;从而实现将左值里的内容转移到右值中 标准定义&#xff1a; 功能就是将一个左值强制转化为右值&#xff0c;然后实现移动语义 注意&…

IP地址、子网掩码、网段、网关

前面相同就是在同一个网段 如果子网掩码和网络号相与的结果是一样的&#xff0c;那么他们就在同一个子网 IP地址、子网掩码、网络号、主机号、网络地址、主机地址以及ip段/数字-如192.168.0.1/24是什么意思?_掩码248可以用几个ip-CSDN博客

CTFshow之RCE代码命令远程执行第29关到第40关详细讲解。一定教会

不在沉默中崛起&#xff0c;便在沉默中变态 --莫迪大仙 引言&#xff1a;最近学习没有头绪&#xff0c;想着把ctf随便刷一刷&#xff0c;过过瘾&#xff0c;试着看能不能每条10到15道题目&#xff0c;并且写下相关的学习记录&#xff0c;持续十天&#xff01;今天是RCE板块29关…

解决 kali 中使用 vulhub 拉取不到镜像问题

由于默认情况下&#xff0c;访问的镜像是国外的&#xff0c;而从 2023 年开始&#xff0c;docker 的镜像网站就一直访问不了&#xff0c;所以我们可以把镜像地址改成国内的阿里云镜像地址。 1、在 cd /etc/docker/目录下创建或修改daemon.json文件 sudo touch daemon.json 2、在…

统计信号处理基础 习题解答10-13

题目&#xff1a; 利用矩阵求逆引理&#xff0c;证明&#xff08;10.32&#xff09;和&#xff08;10.33&#xff09;。提示&#xff1a;首先证明&#xff08;10.33&#xff09;然后利用它来证明&#xff08;10.32&#xff09; 解答&#xff1a; 由&#xff08;10.28&#xf…

【TypeScript】类型兼容(协变、逆变和双向协变)

跟着小满zs 学习 ts&#xff0c;原文&#xff1a;学习TypeScript进阶类型兼容_typescript进阶阶段类型兼容 小满-CSDN博客 类型兼容&#xff0c;就是用于确定一个类型是否能赋值给其他的类型。如果A要兼容B 那么A至少具有B相同的属性。 // 主类型 interface A {name: string,a…

LVS-DR模式详解:提升网站性能的最佳解决方案

LVS-DR模式原理 用户请求到达Director Server&#xff1a; 用户请求到达Director Server&#xff08;负载均衡服务器&#xff09;&#xff0c;数据包首先到达内核空间的PREROUTING链。数据包源IP&#xff1a;CIP&#xff0c;目标IP&#xff1a;VIP&#xff0c;源MAC&#xff1a…

JProfiler 性能分析案列——基于 dump.hprof 堆内存快照文件分析排查内存溢出

在 windows 环境下实现。 一、配置 JVM 参数 配置两个 JVM 参数&#xff1a; -XX:HeapDumpOnOutOfMemoryError&#xff0c;配置这个参数&#xff0c;会在发生内存溢出时 dump 生成内存快照文件&#xff08;xxx.hprof&#xff09;-XX:HeapDumpPathF:\logs&#xff0c;指定生成…

LVS负载均衡:理解IPVS和IPVSADM的内部工作原理

LVS 负载均衡工作模式 LVS&#xff08;Linux Virtual Server&#xff09; 共有三种工作模式&#xff1a;DR、Tunnel、NAT。 DR&#xff08;Direct Routing&#xff09;&#xff1a; 技术原理&#xff1a;DR模式下&#xff0c;LVS调度器接收到请求后&#xff0c;直接通过MAC地址…

个人网站制作 Part 26 添加在线日历功能 | Web开发项目添加页面缓存

文章目录 &#x1f469;‍&#x1f4bb; 基础Web开发练手项目系列&#xff1a;个人网站制作&#x1f680; 添加在线日历功能&#x1f528;使用日历服务&#x1f527;步骤 1: 选择日历服务&#x1f527;步骤 2: 安装FullCalendar&#x1f527;步骤 3: 创建FullCalendar组件&…

基于微信小程序的童书购买系统的设计与实现

基于微信小程序的童书购买系统的设计与实现 摘 要 《“十三五”规划》第一次把“保障妇女、未成年人、残疾人的基本权利”作为重要内容&#xff0c;充分体现了党和国家对广大人民群众的关心&#xff0c;为广大人民群众营造了良好的学习氛围&#xff0c;并出台多项文件及政策&…

「动态规划」如何求最大子数组和?如何求环形子数组的最大和?

53. 最大子数组和https://leetcode.cn/problems/maximum-subarray/description/ 给你一个整数数组nums&#xff0c;请你找出一个具有最大和的连续子数组&#xff08;子数组最少包含一个元素&#xff09;&#xff0c;返回其最大和。子数组是数组中的一个连续部分。 输入&#…

非线性规划解决工资分配问题

来源&#xff1a;河北工业职业技术大学 安彤彤 彭金杉 张家硕 题目 薪资发放问题 一般公司给职员发放薪金&#xff0c;通常按每月等额发放。某公司即将改进薪金发放方案&#xff0c;允许任职5年以上的职员向公司财务部门申请工资每月可变额度发放&#xff0c;每月工资发放额…