社区
C++ 语言
帖子详情
有没有这样的智能指针或者有没有办法实现这样的智能指针
xiaohuh421
2015-10-27 01:58:51
实际上都是为了偷懒
比如有如下的类
class MyStruct
{
public:
void fun();
};
MyStruct *ptr = new MyStruct;
ptr->fun();
想法就是: 有这样一个智能指针, 实现, 在执行ptr->fun();的时候, 自动执行如果为空中, 则不调用fun().
有没有这样的智能指针, 或者怎么实现这样的智能指针, 或者能否实现这样的智能指针?
...全文
180
8
打赏
收藏
有没有这样的智能指针或者有没有办法实现这样的智能指针
实际上都是为了偷懒 比如有如下的类 class MyStruct { public: void fun(); }; MyStruct *ptr = new MyStruct; ptr->fun(); 想法就是: 有这样一个智能指针, 实现, 在执行ptr->fun();的时候, 自动执行如果为空中, 则不调用fun(). 有没有这样的智能指针, 或者怎么实现这样的智能指针, 或者能否实现这样的智能指针?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
encoderlee
2015-11-16
打赏
举报
回复
假如实现了这么一个智能指针, 当写下如下代码时: int n = ptr->fun(); 如果ptr为空,会发生什么情况? 如果为空中, 则不调用fun(). 如何才能实现“不调用”,如果实现了“不调用”, int n = ptr->fun();又怎么能编译通过, 假如编译通过了,运行后,n会是什么内容, 这是个难题
qq_30409783
2015-11-16
打赏
举报
回复
如果指针为空,就说明没有生成对象。对象都没有,如何调用类的函数? 因此指针是否为空,还是需要手工判断。 主要是看你的智能指针想要实现什么功能? 一般智能指针是用来自动释放new创建的对象的。就像auto_ptr。 auto_ptr包含了对指针是否为空的判断,可以借鉴一下。
paschen
版主
2015-11-16
打赏
举报
回复
就加一个判断也不麻烦啊
jiqiang01234
2015-10-29
打赏
举报
回复
写个宏什么的,在内部判断一下,调用的时候就不需要写if了
ztenv
版主
2015-10-29
打赏
举报
回复
在我知识范围内没有,不过可以看看shared_ptr的实现,然后实现自己的shared_ptr类,重载operator->操作符(如果没有持有this指针,则不调用函数)
lm_whales
2015-10-29
打赏
举报
回复
没有。智能指针,只是实现了 operator ->, 并没有实现 函数调用
dustpg
2015-10-27
打赏
举报
回复
直接在MyStruct::fun里面判断this指针, 更安全, 不然都不知道出问题了没有. 如果是虚函数的话, 获取失败后, 返回一个dummy对象, 静态储存就行. 里面虚函数直接返回, 啥都不干.
珍惜生命远离CPP
2015-10-27
打赏
举报
回复
呃,这个不行,老老实实的 先if判断下再执行。
赵4老师
2015-10-27
打赏
举报
回复
http://bbs.csdn.net/topics/390787357
智能
指针
的
实现
概念
智能
指针
本质是对象,但行为却和
指针
极其相似。 是存储指向动态分配(堆)对象
指针
的类,把一个计数器与类指向的对象相关联,引用计数跟踪该类有多少个对象的
指针
指向同一对象。 为什么需要
智能
指针
? 比如在异常学习中我们知道,异常很可能会造成资源泄漏,而且由于C++
没
有垃圾回收机制,就会导致那些申请了的忘记释放的资源的浪费,所以产生
智能
指针
来解决这些问题。
智能
指针
的使用及原理: RA...
C++
智能
指针
的
实现
与使用(详解)
C++
智能
指针
的
实现
与使用(详解)
智能
指针
介绍 缘起 C++
指针
的实际问题 分配内存忘记释放,导致内存泄漏 有
指针
引用时释放内存,导致其它
指针
非法访问异常 一些对象的声明周期难以明确
办法
首先重载运算符*、->、[]、=使得一个类具有
指针
的操作 其次,使用模板编程,使得一个模板类可以接入各种类型 最后,自己管理内存。 使用方法 get、swap、unique、use_count、reset、make_shared(模板方法) 注意事项
智能
指针
不是线程安全的。 #include <ios
智能
指针
的原理及
实现
智能
指针
1
智能
指针
的作用
智能
指针
是一个类,用来存储指向动态分配对象的
指针
,负责自动释放动态分配的对象,防止堆内存泄漏。动态分配的资源,交给一个类对象去管理,当类对象声明周期结束时,自动调用析构函数释放资源 2
智能
指针
的种类 shared_ptr、unique_ptr、weak_ptr、auto_ptr (1) shared_ptr ...
C++
智能
指针
详解
由于 C++ 语言
没
有自动内存回收机制,程序员每次 new 出来的内存都要手动 delete。程序员忘记 delete,流程太复杂,最终导致
没
有 delete,异常导致程序过早退出,
没
有执行 delete 的情况并不罕见。 用
智能
指针
便可以有效缓解这类问题,本文主要讲解参见的
智能
指针
的用法。包括:std::auto_ptr、boost::scoped_ptr、boost::shared_ptr、boost::scoped_array、boost::shared_array、boost::weak_pt
c++
智能
指针
详解
1.什么是
智能
指针
从比较简单的层面来看,
智能
指针
是RAII(Resource Acquisition Is Initialization,资源获取即初始化)机制对普通
指针
进行的一层封装。这样使得
智能
指针
的行为动作像一个
指针
,本质上却是一个对象,这样可以方便管理一个对象的生命周期。 在c++中,
智能
指针
一共定义了4种: auto_ptr、unique_ptr、shared_ptr 和 weak_ptr。其中,auto_ptr 在 C++11已被摒弃,在C++17中已经移除不可用。 2.原始
指针
的问题 原始指
C++ 语言
64,682
社区成员
250,490
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章