C和C++中,->运算符和.运算符都与引用类、结构和共用体的成员有关。
A.B意味着A是一个实体,是对象或者结构体,B是A的成员。A->B意味着A是一个指针,B是A的成员。

//定义一个A类,整形m_B是A的成员,创建对象m_A
class A{public:int B:
}m_A;
//将实例m_A中,B的值赋m_B
int m_B=m_A.B;
A* p_A = &m_A;
m_B=m_A->B;//以指针形式,访问实例m_A

可见,一个变量后面可以跟 . 运算符,一定不能跟->运算符。最近用写代码,发现在C++智能指针后面,二者都可以跟,十分有趣。

C++智能指针是一个类,用来管理动态内存,有超越new和delete的良好特性。

shared_ptr<string> p1;

能跟.运算符,说明这东西是个实体,当使用.运算符的时候,调用的是智能指针类中的方法或成员。

string *p2=p1.get();//返回智能指针中真正的指针,即指向一个字符串的指针

能跟->运算符,说明该实体有指针的功效,这是由于智能指针类重载了->运算符。同时,*运算符执行解引用功能。

if(p1->empty()){//此时,empty是string的成员*p1=“I love huihui”;
}

C++ 智能指针后面 . 与 -> 运算符的一点体会相关推荐

  1. 智能指针:-和*运算符重载 + 模板技术 实现智能指针(C++)

    智能指针介绍 在C++中,我们都知道在堆区new 开辟的内存,必须通过delete 进行内存释放,不然会形成内存泄漏.有时候我们使用了new 后在 写了很多代码,忘记delete 也是很正常的.那么我 ...

  2. 【C++】智能指针(一)入门

    1. 智能指针背后的设计思想 智能指针背后的思想是RAII,参见博客[C++]零散知识 我们先来看一个简单的例子: void remodel(std::string & str) {std:: ...

  3. C++智能指针简单剖析

    导读 最近在补看<C++ Primer Plus>第六版,这的确是本好书,其中关于智能指针的章节解析的非常清晰,一解我以前的多处困惑.C++面试过程中,很多面试官都喜欢问智能指针相关的问题 ...

  4. C++的4种智能指针剖析使用

    1. 智能指针背后的设计思想 我们先来看一个简单的例子: void remodel(std::string & str) {std::string * ps = new std::string ...

  5. 【智能指针1】unique_ptr源码剖析

    这是视频的笔记,编译器版本是Visual Studio 2022提供的MSVC v143,C++版本是20,使用其他版本也是可以的,因为智能指针的源码并没有使用新的C++特性. 这个视频讲的是uniq ...

  6. C++知识点43——解引用运算符和箭头运算符的重载及智能指针类的实现

    一.概念. 在自定义行为类似指针的类时,需要重载*和->.C++中的智能指针就重载了这两个运算符.->必须是成员函数,*也应该是成员函数.与内置类型保持一致,这两个函数通常都是const的 ...

  7. 怎么new一个指针_C++知识点 34:指针运算符重载 -- 智能指针

    #define _CRT_SECURE_NO_WARNINGS #include using namespace std; // 平常可能遇到一个问题 class Test { public: Tes ...

  8. 【Smart_Point】C/C++ 中智能指针

    C++11智能指针 目录 C++11智能指针 1.1 C++11智能指针介绍 1.2 为什么要使用智能指针 1.2.1 auto_ptr(C++98的方案,C++11已经抛弃)采用所有权模式. 1.2 ...

  9. 共享智能指针编程实验

    共享智能指针编程实验 基本知识 shared_ptr与make_shared initializer_list 自定义的StrBlob类 const限定符 示例代码 my_StrBlob.h main ...

最新文章

  1. 不动产登记进入倒计时 哪些房子必须要卖掉?
  2. js寻找两个数组的差集_js求两个数组的交集|并集|差集|去重
  3. 《最后生还者:第二部》文学批评
  4. 高性能、低成本的高防 IP 产品能现实吗?
  5. tomcat应用服务器有哪些,手写一个Tomcat应用服务器
  6. Win8.1部署 .NET Framework 3.5 安装方式
  7. opengl三维图形图形颜色_【图形学基础】基本概念
  8. C++ const对成员函数的修饰 及 取地址及const取地址操作符重载
  9. VIP 时代,详解会员营销系统架构技术实践!
  10. SpringMvc+Mybatis +Oracle
  11. 斯坦福CS230官方指南:CNN、RNN及使用技巧速查(打印收藏)
  12. ES6 Symbol之浅入解读
  13. C4D动力学边界是什么意思?
  14. 将MATLAB中不显示个别图例,隐藏图中某些图形对象的MATLAB图例条目
  15. NR 5G: Relaxed measurement
  16. 【前端】【HTML+CSS+JavaScript(JS)】简易登陆界面的实现
  17. 拍卖程序员,100offer这样的程序员招聘方式靠谱吗
  18. 卡西欧计算机怎么进制转换,casio计算器fx82es刷机实现十进制转其他进制的模式...
  19. Pycharm放大缩小,快捷键控制
  20. 计算机网络ping超时,ping请求超时怎么回事?ping请求超时的解决方法

热门文章

  1. 思科 接入点 本地转发_思科路由器配置 IPv6 和 OSPFv3 路由
  2. 【BUG提交】freemarker 使用Struts2标签问题
  3. .Net配置文件中数据库中连接字符串用法总结
  4. Oracle基于时间点的恢复(转载)
  5. mysql 远程虚拟主机_navicat 远程连接虚拟机MYSQL数据库
  6. 开源GIS(三)——openlayers地图基本框架与天地图加载
  7. java后台调用SOE时,报异常java.io.IOException: Attempted read from closed stream
  8. 为什么玩家会流失:如何理解次日留存率
  9. 手机游戏中的社交互动与任务剧情
  10. 27岁后月薪低于8K,会被淘汰吗?