首页 > 编程语言 >C++( get()方法、->、*)

C++( get()方法、->、*)

时间:2023-12-12 10:59:06浏览次数:39  
标签:std get int C++ 方法 ptr 指针

在C++中,指针是一种强大的工具,用于处理内存和访问数据。以下是一些与指针相关的基本概念和操作符:

  1. 解引用运算符 *

    • 用于访问指针指向的内存地址处的值。

    • 例如,如果有一个指针 int* ptr,则 *ptr 将返回指针所指向地址的整数值。

      int x = 10;
      int* ptr = &x;
      std::cout << *ptr; // 输出 10
      
  2. 成员访问运算符 ->

    • 用于通过指针访问对象的成员,通常在指向对象的结构或类的指针上使用。

    • 等同于 (*ptr).member 的简化写法。

      struct MyStruct {
          int member;
      };
      
      MyStruct obj;
      MyStruct* ptr = &obj;
      ptr->member = 42;
      std::cout << ptr->member; // 输出 42
      
  3. get() 方法

    • 在C++中,指针没有内建的 get() 方法。通常,get() 是与智能指针相关的方法,而不是原始指针。

    • get() 用于获取智能指针底层的原始指针。

      #include <memory>
      
      int main() {
          std::shared_ptr<int> sptr = std::make_shared<int>(5);
          int* rawPtr = sptr.get(); // 获取底层的原始指针
          std::cout << *rawPtr;    // 输出 5
          return 0;
      }
      

    上述示例中,get() 方法用于从 shared_ptr 中获取底层的原始指针。

总体而言,指针是一种强大但需要小心使用的工具,特别是在涉及内存管理和指针算术时。在现代C++中,推荐使用智能指针(如 std::shared_ptrstd::unique_ptr)来管理资源,以减少内存泄漏和提高代码安全性。



标签:std,get,int,C++,方法,ptr,指针
From: https://www.cnblogs.com/keye/p/17896268.html

相关文章

  • easyYapi 简单使用 ,一次只导出一个方法,swagger 注解生效,md 文档
    easyYapi简单使用,一次只导出一个方法,swagger注解生效,md文档有时候开放平台需要写文档,这个时候给yapi和swagger就不太友好,导出md,在导入smartdoc或者自己的md线上,其他3方的文档库语雀啥的就会好很多。1.第一步安装idea插件4.设置配置信息3.swagger......
  • 《Function Programming in C++》
    说明《FunctionalProgramminginC++》书中代码练习测试以及一些笔记,部分代码需要用到C++20可以使用在线编译器编译代码地址:https://coliru.stacked-crooked.com/或者自己编译gcc-11.2及以上版本安装1介绍1.1什么是函数式编程用常用的函数范式模板代替一些循环等,比如std......
  • Unreal C++自定义Actor设置StaticMesh和Material
    1.新建第三人称c++游戏(其它模板开局也可以的)2.新建继承自Actor的c++类3.添加静态网格体成员SM_MyActor,并在构造函数中进行相应的初始化UCLASS()classMYPROJECT9S_APIAMyActor:publicAActor{GENERATED_BODY()protected:/**Pleaseaddavariabledescripti......
  • Linux系统C++程序设计1-Linux系统和POSIX 标准入门
    1Linux系统和POSIX标准入门本书介绍了Linux以及我们如何在Linux环境中使用C++来管理关键资源。我们想花一些时间在本章中加深对操作系统(OS)的基本了解。您将更多地了解一些特定技术、系统调用接口和可移植操作系统接口(POSIXPortableOperatingSystemInterface)的起源。在Lin......
  • C++基础 -4- C/C++混合编程
    ———————C/C++混合编程———————......
  • Qt中QWidgetAction使用例子
    在Qt中可以用QWidgetAction来模仿现代应用程序中的自定义控件的菜单项。比如下方Edge浏览器的菜单,在“缩放”一项中有用来调整网页缩放的几个按钮和显示网页缩放比例的控件。这样的菜单项Qt也可以做。下面将给出一个简单的例子供参考,此例子在VS2017和Qt5.9下测试通过。其运行效......
  • 在CentOS7等老系统上配置clangd进行C/C++开发
    应该有许多公司开发机器上还是用着比较老的环境,比如CentOS7之类的。这类系统上很可能他的glibc的版本不到2.18,clangd要求的最低glibc版本就是2.18,因此我们没办法直接在这类老系统上运行clangd。但是vscode上微软的那个c++插件一坨史,慢不说,补全也差劲。我的要求有几点:不能升级......
  • C++学习笔记七:输出格式
    这一篇主要总结一下C++标准库里输出格式相关的库函数。https://en.cppreference.com/w/cpp/io/manip1.库:<ostream><ios><iomanip> 2.库函数:2.1<ostream>std::endl:输出换行,同"\n"的效果一样。std::flush:causesimmediatesendingofdatatothedeviceconnecte......
  • python的 __enter__ 和 __exit__方法,上下文管理器
    在Python中,类并没有专门的exit方法。但是,如果你想在对象生命周期结束时执行某些操作,你可以使用特殊的方法__enter__和__exit__,这与Python上下文管理器(ContextManager)相关。__enter__方法:当进入with代码块时,__enter__方法会被调用。__exit__方法:当退出with......
  • java 数组添加元素的两种方法
    方式一:创建一个新数组,长度为原数组加1,然后将原数组数据添加到新数组,最后再添加需要的新数据 @Testpublicvoidredd111(){String[]s1={"aaa","bbb","ccc"};String[]s2=newString[s1.length+1];for(inti=0;i<s1.length;i++){......