博客
关于我
指针运算符重载,智能指针
阅读量:148 次
发布时间:2019-02-28

本文共 1160 字,大约阅读时间需要 3 分钟。

#include
using namespace std;class person { public: person() { cout << "无参构造的调用" << endl; } void show() { cout << "年龄为:"<<18 << endl; } ~person() { cout << "析构函数的调用" << endl; }};void test(){ person* p=new person; p->show();}int main(){ test(); system("pause"); return 0;}

在这里插入图片描述

智能指针:托管new出来的对象的释放

#include
using namespace std;class person { public: person() { cout << "无参构造的调用" << endl; } void show() { cout << "年龄为:"<<18 << endl; } ~person() { cout << "析构函数的调用" << endl; }};//智能指针class smartpoint { public: smartpoint(person* person) { this->p = person;//指向在堆区开辟空间的地址 } //重载->运算符号 person* operator->() { return this->p; } //重载*运算符号 person& operator*() { return *(this->p); } ~smartpoint() { if (p != NULL) { delete p; p = NULL; } }private: person* p;};void test(){ /*person* p=new person; p->show();*/ /*delete p;*/ //智能指针:托管new出来的对象的释放 smartpoint sp(new person()); //重载->运算符 //这里sp->返回的是person* sp->show();//本质sp->->show(); 编译器简化为sp->show() sp.operator->()返回值是*person (*sp).show();//*sp相当于-----sp.operator*(),返回值是(*person)}int main(){ test(); system("pause"); return 0;}

在这里插入图片描述

转载地址:http://cwzc.baihongyu.com/

你可能感兴趣的文章
[PHP] 解决php中上传大文件的错误
查看>>
[Linux] 使用awk比较两个文件的内容
查看>>
[Git] 彻底删除github上的某个文件以及他的提交历史
查看>>
[Go] gin框架渲染html字符串
查看>>
[js] js中的闭包以及特点
查看>>
[操作系统]内存连续分配管理方式
查看>>
[Go] json.Unmarshal()解析后存储的结构体定义
查看>>
[PHP]PHP不支持方法重载和只支持方法覆盖
查看>>
[Go] 获取Go二进制文件的真正执行路径os.Args
查看>>
java Map
查看>>
scala Tuple入门到熟悉
查看>>
RDD partitioner入门详解
查看>>
presto查询报错
查看>>
superset报错
查看>>
Hive 分组取Top N
查看>>
yarn开启Label Scheduler
查看>>
Spark sample入门到精通
查看>>
C++ Primer Plus【复习笔记】-【复合类型】
查看>>
前端一些要会的知识点
查看>>
VUE +ElementUI form表单回车提交
查看>>