首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C++智能指针详解(共享指针唯一指针,自动指针

C++标准库提供了针对共享指针原子接口; 针对共享指针本身操作是原子,并不包含该指针引用具体值 atomic_is_lock_free(&point) //如果point原子接口是没上锁...+指针算法 唯一指针不可使用赋值语法进行初始化,应使用普通指针初始化 唯一指针可以为空 release()可以让唯一指针返回其拥有的对象,并失去指向该对象唯一性,调用release()指针将指向返回对象.../传递删除器类型实例作为删除器,创建一个空唯一指针 unique_ptr up(nullptr) 使用默认/传递删除器类型实例作为删除器,创建一个空唯一指针 unique_ptr up...(ptr) 使用默认/传递删除器类型实例作为删除器,创建拥有* ptr唯一指针 unique_ptr up(ptr,del) 使用del作为删除器创建拥有* ptr唯一指针 unique_ptr...up(move(up2)) 创建一个拥有up2先前拥有的指针唯一指针(此后up2为空) unique_ptr up(move(ap)) 创建一个拥有先前由auto_ptr ap拥有的指针唯一指针

1.5K20

详解c++指针指针指针引用

展示一下使用指针指针指针引用修改传递给方法指针,以便更好使用它。...(这里说指针指针不是一个二维数组) 为什么需要使用它们 当我们把一个指针做为参数传一个方法时,其实是把指针复本传递给了方法,也可以说传递指针指针值传递。...如果我们在方法内部修改指针会出现问题,在方法里做修改只是修改指针copy而不是指针本身,原来指针还保留着原来 值。...输出是两个2 使用指针指针 展示一下使用指针指针做为参数 void func(int **p) { *p = &m_value; // 也可以根据你需求分配内存 *p...我们看一下 func(int **p)这个方法 p:  是一个指针指针,在这里我们不会去对它做修改,否则会丢失这个指针指向指针地址 *p:  是被指向指针,是一个地址。

1.3K60
您找到你想要的搜索结果了吗?
是的
没有找到

C++this指针

大家好,又见面了,我是你们朋友全栈君。 C++this指针 当你进入一个房子后, 你可以看见桌子、椅子、地板等, 但是房子你是看不到全貌了。...C++在初始化对象时,每个对象中数据成员都会得到系统分配自己独立存储空间。...this指针特性: 1、this指针类型const(类名const),为右值。 2、this指针本身不占用大小,并不是对象本身一部分,不影响sizeof结果。...5、只有在类非静态成员函数中才可以使用this指针, 其它任何函数都不可以。 6、this指针时刻指向对象 。 7、当this指针指向空时,是不会指向对象。...也就是说,成员函数参数不能与对象成员变量重名,如果一定要重名,就必须用this指针指明。

54620

C++C++ 类中 this 指针用法 ① ( C++ 类中 this 指针引入 | this 指针用法 | 代码示例 )

一、C++ 类中 this 指针 1、C++ 类中 this 指针引入 在 C++ 类中 , this 指针 是一个特殊指针 , 由系统自动生成 , 不需要手动声明定义 , 在类中每个 非静态成员函数...中 , 都可以调用 this 指针 ; this 指针 是指向 调用对象 自身 指针 , 也就是调用 该成员函数 实例对象 内存地址 ; 由于 this 指针只能在 非静态成员函数内部使用..., 因此 this 指针是类内部使用指针 , 使用 this 可以访问 实例对象 中 所有 公有 public / 保护 protected / 私有 private 成员 ; 2、C++ 类中...this 指针用法 C++ 类中 this 指针用法 : 使用 this 作为指针 : 在 非静态成员函数 中 , 直接使用 this 作为 本实例对象 指针 ; this 使用 this-> 访问成员变量...访问成员变量 : 在 非静态成员函数 中 , 直接使用如下语法 , 访问 本实例对象 中 非静态成员变量 ; 先获取指针指向数据 然后访问数据中成员变量 ; (*this).成员变量名 在 C++

23120

C++ this指针

:this指针,通过this指针来访问自己地址。...注意: this指针并不是对象一部分,this指针所占内存大小是不会反应在sizeof操作符上。...this指针类型取决于使用this指针成员函数类型以及对象类型, 一、this指针概念 定义 在 C++ 中,每一个对象都能通过 this 指针来访问自己地址。...this指针创建 this指针在成员函数开始执行前构造,在成员执行结束后清除。 this指针只有在成员函数中才有定义。 创建一个对象后,不能通过对象使用this指针。...也无法知道一个对象this指针位置(只有在成员函数里才有this指针位置)。当然,在成员函数里,你是可以知道this指针位置(可以&this获得),也可以直接使用

54120

C++ 指针常量与常量指针

而不管是指针常量还是常量指针他们区别其实就是const关键字位置,下面直接根据声明方式不同解释二者区别: 在只有一个关键字const情况下,声明有三种方式: //1 const int* p...所以被指向数据值到底能不能改变根本不由指针声明方式决定,而是该数据本身是常量还是变量。.../合法 p = &b;//不合法 以上就是所谓指针常量与常量指针所包含概念,在这里标个号: 1,2暂时称为第一类,3暂时称为第二类,那么第一类和第二类到底哪个叫做指针常量,那个叫做常量指针呢?...说实话我都不知道指针常量与常量指针叫法是不是够官方,我只能说概念非常混淆,而且其实它两个名字并不重要,关键是声明方式与作用区别。...上面说情况,对于指针修饰都只用了一个const关键字,还有两个const一起用时候,此时结果就是指针不能修改指向数据,指针不能指向别的地方: int a = 5; int b = 6; const

1.6K70

C++指针c++指针使用注意点

c++指针使用注意点 避免野指针产生 “野指针成因主要有: 1)指针变量没有被初始化。...任何指针变量刚被创建时不会自动成为NULL指针,它缺省值是随机,它会乱指一气。所以,指针变量在创建同时应当被初始化,要么将指针设置为NULL,要么让它指向合法内存。...char *p; //此时p为野指针 2)指针p被free或者delete之后,没有置为NULL,让人误以为p是个合法指针. char *p=new char[10]; //指向堆中分配内存首地址...e.指针做形参 即所谓地址传递,我们都知道地址传递方式,形参改变会导致实参改变,但要注意是,这里改变是指指针所指内容改变,而不是指针改变。...a指向,即改变指针值a值,先前是“abc”地址,后来是“cba”地址。

1.4K30

C++ 指针、引用梳理

* 指针运算符 可作为左值。表示查询到指针所对应内存空间这样操作。 & 地址运算符,可以概括为 取址运算符,从变量或对象等获取到该元素所在内存空间中对应地址。...实际上这里object->method()等价于 (* object).method(),这是c++提供一种语法糖。...另外,每个对象方法内,默认隐含了一个this属性,实际上是指向该对象本身指针运算 算数运算 对指针运算并非对地址进行修改,而是对于指针所指向内存空间进行偏移定位。...另外可以将指针与0做比较,判断指针是否为空。(如果是新标准 可能不行) 指针传参 指针传参是十分重要一个特性了,失去了指针C++也就失去了他最大性能优势。...但是需要注意,返回指针应当是一个返回后依然有效指针,否则会产生越界,野指针或是更多错误。

43920

C++中this指针本质

大家好,又见面了,我是你们朋友全栈君。...一直以来对C++this不理解,只知道在构造函数中,如果构造函数参数和类成员名字一样的话,就可以用this指针来区分,如: this->a = a; 一直以来都有这个疑问:this究竟是什么?...从刚才代码中,我们用”this->”而不是”this.”就说明this是一个指针,而我们知道,在C、C++中,指针就是地址,因此很容易想到,this也是一个地址。但是问题来了,this是谁地址呢?...我们看下面这个很简单C++程序: #include class A { public: A(); }; A::A() { std::cout << "this...我们可以看到,this和&a结果是一样。由此可以看出,this就是a地址,而a是类A一个对象,占用了sizeof(A)内存空间。

73530

c++之this指针

this指针指向被调用成员函数所属对象。 this指针是隐含每一个非静态成员函数内一种指针。 this指针不需要定义,直接使用即可。...用途: 当函数形参和成员变量名重名时,可以用this进行区分。 在类非静态成员函数中返回对象本身,可使用return *this。...setAge(int age) { this->age = age; } //如果不是返回Person&,注意拷贝构造函数时所说, //如果直接返回Person,那么返回就是一个新拷贝对象...:" << p2.age << endl; Person p3; p3.setAge(12); //意思是p2只操作了一次,后面操作不是p2,所以只加了一次,输出为24...p3.PersonAddAge2(p).PersonAddAge2(p); cout << "对象p3年龄为:" << p3.age << endl; system("pause");

34930

c++指针

一、指针基本概念 指针作用:可以通过指针间接访问内存。 内存编号是从0开始记录,一般用十六进制数字表示。 可以利用指针变量保存地址。...二、指针变量定义和使用 指针变量定义语法:数据类型 *变量名 int a = 10; //声明指针变量 int* p; //指针指向a地址 p = &a;...四、空指针和野指针 1.空指针指针变量指向内存中编号为0空间。 用途:初始化指针变量。 注意:空指针指向内存是不能够访问。...b = 10; //常量指针指针指向值不可以改,指针指向可以改 //即*p=20是非法,p=&b是合法 const int* p = &a; //指针常量,指针指向不可以改...//arr是一个指针,指向数组第一个元素,在数组中用下标访问元素值时,相当于是将指针指向该元素内存空间 //我理解是c++会自己定位到那,并取得值 for (int i = length

50820

C++之this指针

大小 有个问题是刚开始学习C++的人都想知道,那就是C++类对象大小是多少?可能猜测是它所有数据成员大小加上所有函数指针大小,这样就是类大小。...这个大小看起来就是数据成员放在结构体中大小。依然采用内存对齐。这说明函数成员和数据成员是分开存储。 那么C++函数成员是怎么确定是哪一个对象在调用它?...为了解决这个问题,C++设计了一个叫做this指针东西。它能帮助成员函数知道谁在调用它。 this指针 this指针存放着当前对象地址,也就是this指针指向当前对象。可以使用它来返回对象本身。...this指针不是对象成员。 this指针只能在成员函数内部使用,类外以及成员函数外部都不能使用。 this指针是普通成员函数一个隐藏参数。 注意:类静态成员函数不具备this指针。...this指针另外一个附加功能就是当类数据成员和类函数参数名称一致时候,使用this指针可以避免混淆。就像下面代码中一样。

42610

C++C++ 引用详解 ⑦ ( 指针引用 )

一级指针 引用 , 调用时可以直接当做 一级指针 使用 , 可实现功能 相当于 二级指针 ; N 级指针 引用 , 调用时可以直接当做 N 级指针 使用 , 可实现功能 相当于 N + 1 级指针...; 在 C++ 语言 中 , 使用 引用 时 , C++ 编译器 会自动将 引用 翻译为 一级指针 使用 , 自动 在 一级指针 变量 旁边加上 取地址符号 & 和 取值符号 * ; 指针引用 就相当于...二级指针 , 其 实现效果 , 等同于 二级指针 ; C++ 编译器 遇到 指针引用 时 , 会自动将 引用指针 转为 二级指针 ; 2、引用本质 - 函数间接赋值简化版本 使用函数进行间接赋值...; 如果将 函数 形参类型 设置为 引用 类型 , 也能达到 间接赋值 效果 ; 引用 实际上是 把 间接赋值 三个条件后两个条件进行了合并 , C++ 编译器遇到引用 , 还是需要将 引用...等同于 二级指针 ; 其效果等同于上一篇博客 【C++C++ 引用详解 ⑥ ( 普通变量 / 一级指针 / 二级指针 做函数参数作用 ) 中 int getStudent(Student** stu

26920

C++指针详解

要搞清一个指针需要搞清指针四方面的内容:指针类型,指针所指向类型,指针值或者叫指针所指向内存区,还有指针本身所占据内存区。让我们分别说明。...从语法上看,你只需把指针声明语句中指针名字和名字左边指针声明符*去掉,剩下就是指针所指向类型。...:指针类型,指针所指向类型,指针指向内存区,指针自身占据内存。...数组和指针关系 如果对声明数组语句不太明白的话,请参阅我前段时间贴出文章>。数组数组名其实可以看作一个指针。...所有的C/C++编译器在排列数组单元时,总是把各个数组单元存放在连续存储区里,单元和单元之间没有空隙。

48020

C++指针运算

C++指针运算 指针变量加或减 一个整数   p++; p--; p+i; p-i; C++规定,一个指针变量加或减一个整数是将该指针变量原值和它指向变量所占用内存单元字节数相加或相减。...读者应明白一点,point值等于NULL和point未被赋值是两个不同概念。 C++两个指针变量可以相减  如果两个指针变量指向同一个数组元素,则两个指针变量值之差是两个指针之间元素个数。...C++两个指针变量比较  若两个指针指向同一个数组元素,则可以进行比较,指向前面的元素指针变量小于指向后面元素指针变量。...C++使用指针优缺点 指针是C语言和C++重要组成部分,使用指针优点是:  提高程序效率。...使用指针缺点是: 指针使用实在太灵活,对不熟练程序员来说,很容易出错,而且出现错误很难发现。 C++指针运算 更多案例可以go公众号:C语言入门到精通

1K2118

c++ 函数指针

大家好,又见面了,我是你们朋友全栈君。 函数指针基础: 1. 获取函数地址 2....声明一个函数指针 3.使用函数指针来调用函数 获取函数指针: 函数地址就是函数名,要将函数作为参数进行传递,必须传递函数名。...声明函数指针 声明指针时,必须指定指针指向数据类型,同样,声明指向函数指针时,必须指定指针指向函数类型,这意味着声明应当指定函数返回类型以及函数参数列表。...例如: double cal(int); // prototype double (*pf)(int); // 指针pf指向函数, 输入参数为int,返回值为double pf = cal;...// 指针赋值 如果将指针作为函数参数传递: void estimate(int lines, double (*pf)(int)); // 函数指针作为参数传递 使用指针调用函数 double

43420
领券