有没有这样的智能指针或者有没有办法实现这样的智能指针

xiaohuh421 2015-10-27 01:58:51
实际上都是为了偷懒
比如有如下的类
class MyStruct
{
public:
void fun();
};

MyStruct *ptr = new MyStruct;

ptr->fun();

想法就是: 有这样一个智能指针, 实现, 在执行ptr->fun();的时候, 自动执行如果为空中, 则不调用fun().

有没有这样的智能指针, 或者怎么实现这样的智能指针, 或者能否实现这样的智能指针?
...全文
180 8 打赏 收藏 转发到动态 举报
写回复
用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对象, 静态储存就行. 里面虚函数直接返回, 啥都不干.
  • 打赏
  • 举报
回复
呃,这个不行,老老实实的 先if判断下再执行。
赵4老师 2015-10-27
  • 打赏
  • 举报
回复

64,682

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧