首页 > 编程语言 >C++的箭头运算符

C++的箭头运算符

时间:2024-02-23 17:15:44浏览次数:33  
标签:string C++ 运算符 箭头 empty 指针

以前学类的时候,一个指针指向类的实例,当我们想通过指针访问某些类的成员的时候,书上直接告诉你,使用->来访问这些成员,不能用.运算符。

我以前也是默默接受了这个观点,平时也没细想,今天才知道是怎么回事。

string *p = string("hello");
*p.empty();  // 错误。会先执行p.empty(),之后再*解引用
(*p).empty();  // 正确

所以本质上是运算顺序的问题,要保证解引用运算符先进行。

后面就直接引入了->,直接避免了这个复杂的写法,p->empty()简单了很多。

标签:string,C++,运算符,箭头,empty,指针
From: https://www.cnblogs.com/jye159X/p/18029960

相关文章

  • 八、井号运算符
    八、井号运算符其实,C语言允许在字符串中包含宏参数。在类函数宏(带参宏)中,#号作为一个预处理运算符,可以把记号转换成字符串。例如,如果A是一个宏形参,那么#A就是转换为字符串"A"的形参名。这个过程称为字符串化(stringizing)。如下为示例程序:#include<iostream>#defineADD......
  • 15. 三数之和C++
    先排序,再暴力找就好了。如果当前元素大于0或者前两个元素和大于0就不用找了。然后结果超时了。然后借鉴了双指针的解法,发现双指针其实就是把单向循环优化成双向循环。 classSolution{public:vector<vector<int>>threeSum(vector<int>&nums){sort(nums.beg......
  • C++多线程 第九章 高级线程管理
    第九章高级线程管理注意:本章内容由于教材本身问题,例子存在较大问题.请自行在理解基础上重新设计.在大多数系统上面,为每个可以与其他任务并行执行的任务分配一个单独的线程是不切实际的.但线程池允许尽量充分利用硬件提供的并发性.在线程池帮助下,可以被并发执行的任务......
  • Mounriver工程转为C++(转载)
    注:文章为内部转载。1、右键要转换为C++的工程new->other,按下图选择点击next,按下图配置,点击FINSH。2、工程转换为C++之后,原有的设置都会变成默认的,需要重新添加。上图添加头文件路径。上图添加链接脚本路径。上图使用默认的桩函数。3、添加C++初始化函数,在启动文件调......
  • C++动态内存分配探秘:new与malloc的关键差异及实例解析
     概述:在C++中,new和malloc均用于动态内存分配,但存在关键差异。new是C++运算符,能调用构造函数,返回类型明确;而malloc是C函数,仅分配内存,需手动类型转换。示例源代码生动演示了它们在构造函数调用和类型信息方面的不同。在C++中,new 和 malloc 都用于动态内存分配,但它们之间......
  • C++强制类型转换详解:四种操作符解析与实例演示
     概述:C++中的强制类型转换是实现数据类型间转换的关键机制,包括static_cast、dynamic_cast、const_cast和reinterpret_cast四种。这些操作符适用于不同的场景,通过实例源代码详细阐述了它们的使用方法和步骤。在C++中,强制类型转换是将一个数据类型的值转换为另一个数据类型的过......
  • C++ 第四节课 C和C++指针的区别 C的宏函数和C++内联函数的优缺点
    #include<iostream>//定义一个宏函数#defineADD(x,y)x+y;//宏函数具有速度快等特点但是写代码有些业务比较繁琐,所以C++中使用了内联函数优化//在定义函数前面添加一个inline把这个函数变成内联函数inlineintmax(intx,inty){returnx>y?x:y;}usi......
  • c++ 通过一个临时的空的智能指针(裸指针),交换两个智能指针(裸指针)的值,注意是交换值!!!!
    #include<iostream>#include<memory>usingnamespacestd;structParenTask//父亲{stringname{};};typedefshared_ptr<ParenTask>ParenTaskPtr;structSubTask:ParenTask//孩子{intuid{};};typedefshared_ptr<SubTask&g......
  • M1 MacOS 配置C++环境时遇到的插件问题
    配置环境参照博客:https://www.cnblogs.com/BYGAO/p/15135609.html遇到问题:在Terminal--ConfigureDefaultBuildTasks--C/C++clang++这一步没有C/C++clang++选项。解决方法:shift+command+p打开搜索框,搜索SettingsSync:ShowSettings在IgnoredExtensions中打......
  • C++ 第三节课 指针的使用
    #include<iostream>usingnamespacestd;voidshow(){cout<<"全局函数"<<endl;}structStu{inta;voidwrite_code(){cout<<"成员函数"<<endl;}};intmain(){cout<<......