【c++智能指针介绍之auto_ptr】教程文章相关的互联网学习教程文章

c++11 智能指针 unique_ptr、shared_ptr与weak_ptr【代码】

c++11 智能指针 unique_ptr、shared_ptr与weak_ptr C++11中有unique_ptr、shared_ptr与weak_ptr等智能指针(smart pointer),定义在<memory>中。可以对动态资源进行管理,保证任何情况下,已构造的对象最终会销毁,即它的析构函数最终会被调用。 unique_ptrunique_ptr持有对对象的独有权,同一时刻只能有一个unique_ptr指向给定对象(通过禁止拷贝语义、只有移动语义来实现)。unique_ptr指针本身的生命周期:从unique_ptr指针创建时...

C++——指针---指向数组的指针---指向字符串的指针--指向函数的指针--指针的指针--指针的引用【代码】

一、指向数组的指针代码示例1: 1int main() 2{ 3int a[10]={0,2,4,6,8,10,12,14,16,18}; 4int *p; 5for(p=&a[0];p<&a[0]+10;p++) 6 printf("%d ",*p); 7 }代码示例2: int a[10]={0,2,4,6,8,10,12,14,16,18}; int *p; p=a; printf("%d\n",*(a+5));//注意加括号,否则就是输出“a指向的值加5”了int sum(int *a,int n) {int ans=0;for(int i=1;i<=n;i++)ans+=a[i];return ans; } 二、指向字符串的指针示例代码: 1char *ps...

为什么c++中函数指针是16字节【代码】

原文链接当我们讨论指针时,通常假设它是一种可以用 void * 指针来表示的东西,在 x86_64 平台下是 8 个字节大小。例如,下面是来自 维基百科中关于 x86_64 的文章 的摘录:Pushes and pops on the stack are always in 8-byte strides, and pointers are 8 bytes wide. 从 CPU 的角度来看,指针无非就是内存的地址,所有的内存地址在 x86_64 平台下都是由 64 位来表示,所以假设它是 8 个字节是正确的。通过简单输出不同类型指针的...

C++基础之指针与引用的底层实现

一句话总结指针分配内存,有地址(编译器和程序员看来),属于一个类型变量,支持取地址与解引用操作。引用分配内存,有地址(编译器看来),相当于一个变量别名,不支持取地址与解引用操作(即不可获取其本身地址),声明即必须初始化,不可变更引用对象,本质上是“pointer const”。推荐阅读快速理解:简谈 C++ 中指针与引用的底层实现原文:https://www.cnblogs.com/MinPage/p/14662084.html

浅谈C/C++引用和指针的联系和区别【代码】【图】

为什么C/C++语言使用指针?答案:①一方面,每一种编程语言都使用指针。不止C/C++使用指针。每一种编程语言都使用指针。C++将指针暴露给了用户(程序员),而Java和C#等语言则将指针隐藏起来了。“Everything uses pointers. C++ just exposes them rather than hiding them,” It‘s easier to give someone an address to your home than to give a copy of your home to everyone.②另一方面使用指针的优点和必要性:指针能够有效...

C++ 引用 vs 指针

引用很容易与指针混淆,它们之间有三个主要的不同:不存在空引用。引用必须连接到一块合法的内存。一旦引用被初始化为一个对象,就不能被指向到另一个对象。指针可以在任何时候指向到另一个对象。引用必须在创建时被初始化。指针可以在任何时间被初始化。原文:https://www.cnblogs.com/0patrick/p/13121415.html

c++入门之初话指针【代码】

先上代码:再进行总结知识: 1 # include "iostream" 2struct ant_year_end3{4int year;5};6 7int main()8{9usingnamespace std; 10 ant_year_end s1, s2, s3; 11 s1.year = 1998; 12 ant_year_end *point = &s2; 13 point->year = 1999; 14 ant_year_end trio[3]; 15 trio[0].year = 2003; 16 cout << trio->year << endl; 17const ant_year_end*arp[3] = { &s1, &s2, &s3 }; 18 cout << arp[1]->...

c++中的const与指针

const修饰符使用const修饰变量时,该变量的值不可修改,因此需要初始化。例如 const int s = 0;此时s为值不可变的变量。那么基于此,当const修饰指针时的情况有三种:(1)const int *p;此时const修饰的是 *p 而非 p,因此,*p的值不可变,而p的值是可变的,所以可不对p进行初始化。例如,int s = 0,t = 1;const int *p;p = &s;cout<<*p<<endl;p = &t;cout<<*p<<endl;以上代码输出:01但此时,无论p指向s或者t,均不能通过 *p 修...

温故而知新 C++ 数组与指针【代码】【图】

#include <stdio.h>usingnamespace std;int main(int argc, _TCHAR* argv[]) {int a[5];int b[4] = {1,2,3,4};char c[] = "1234";int *d= newint[4];*d = 1;*(d+1) = 2;*(d+2) = 3;*(d+3) = 4;printf("a length = %d\n",sizeof(a));printf("b length = %d\n",sizeof(b));printf("c length = %d\n",sizeof(c));printf("d length = %d\n",sizeof(d));delete d;d = nullptr;system("pause");return0; }数组的初始化方式,可以用以上几...

C++笔记--指针和引用【代码】【图】

面试一:指针与引用的区别?答案:(1)非空区别。在任何情况下都不能使用指向空值的引用。因此如果你使用一个变量并让它指向一个对象,但是该变量在某些时候也可能不指向任何对象,这时你应该把变量声明为指针,因为这样你可以赋空值给该变量。相反,如果变量肯定指向一个对象,例如你的设计不允许变量为空,这时你就可以把变量声明为引用。不存在指向空值的引用这个事实意味着使用引用的代码效率比使用指针要高。(2)合法性区别...

C++11 智能指针【代码】

【1】C++11智能指针应用示例如下: 1 #include <iostream>2 #include <memory>3usingnamespace std;4 5void test_unique_ptr()6{7 unique_ptr<int> up1(newint(2020)); // 无法复制的unique_ptr8// unique_ptr<int> up2 = up1; // 不能通过编译 9 cout << (*up1) << endl; // 202010 unique_ptr<int> up3 = move(up1); // 现在up3是数据唯一的unique_ptr智能指针11 cout << (*up3)...

C++中数组和指针的区别【代码】

刚接触指针的时候,你很可能会觉得:数组和指针基本上是同一个东西。的确,数组和指针都可以用*取值,都可以加减某个数获得别的指针,都可以用[]来取值……例如下面的代码:int arr[5] = {2, 3, 5, 7, 9}; //定义一个数组,长度为5 int* arr_ptr = arr; //定义一个指针指向数组arrcout << "*arr = " << *arr << "\t*(arr + 3) = " << *(arr + 3) << "\t\tarr[3] = " << arr[3] << endl; cout << "*arr_ptr = " << *arr_ptr << "\t*...

C++编程基础一 17-指针和数组【代码】

1// 17-指针和数组.cpp: 定义控制台应用程序的入口点。2//3 4 #include "stdafx.h" 5 #include <iostream>6 #include <climits>7 8usingnamespace std;910int main() 11{ 12int a[]{345,65,23,7,2,856,23,83,176}; 13 cout << a << endl;//输出数组的时候也输出一串地址,输出的地址是数组的第一个元素的地址。在C++中数组也是指针。 14//如果数组a是指针,那么可以同个*a查看指针的值,应该就是345。15 cout << *a << en...

c++中的指针

指针用起来是一把利器,但用得不好的童鞋 无异于 火上浇油 ,下面笔者将自己学习 的一点小小心得,与君共享 指针在类中1.对象指针 初始化Point a(4,5); Point *p1 = &a; 使用使用对象名访问成员函数 cout << a.getX() << endl; 使用对象指针访问成员函数 cout << p1->getX() << endl; 2.成员函数指针 初始化 int (Point::* funcptr)()=Point:: getX(); 使用 使用成员函数指针访问成员函数 cout << (a.*funcPtr)() << endl; ...

c++——this指针 在类中指向 函数首地址【代码】

//this指针的作用#include"stdafx.h"#include<iostream>usingnamespace std;class CA{int a;public:CA(int i){ a = i; }void run(){ printf("CA run %d\n", a); }};//其中CA里面的run函数可以理解为如下代码、//void run(CA *const this)//{// printf("CA run\n");//}class CB :public CA{public:CB(int i) :CA(i){}void run(){printf("CB run\n");}};void findRun(CA & a) //没有定义成员变量呀 {a.run();}//调用int m...