【[modern c++] 智能指针unique_ptr】教程文章相关的互联网学习教程文章

如何使用C++成员函数指针

有时候,一个类当中若干相同声明的函数,希望放到一个数组当中,批量执行,那么就可以定义一个vector<T> T是成员函数指针类型。成员函数指针和static指针声明有些区别,下面是实际的例子设一个BLL类,又proc1 proc2 proc3 3个成员函数,初始化的时候,都压入m_Procs数组,调用Do方法的时候,依次支持数组中压入的成员函数。#include <vector> using namespace std;class BLL { private:typedef void (BLL::*p_proc)();vector<p_pro...

c++ 结构体 数组 指针 函数的遍历(笔记)【代码】

#include <iostream> #include <string> using namespace std;struct student{string sname;int score; };void print(student *s){for (int i = 0; i < 3; ++i) {cout<<(s+i)->sname<<" "<<(s+i)->score<<endl;} }int main() { struct student stu[3]; stu[0].sname="张三"; stu[0].score=100;stu[1].sname="李四"; stu[1].score=99;stu[2].sname="王五"; stu[2].score=80;student *e= stu;print(e);}初学c++遇到难点,在这做个笔...

c++下传引用,传值和传指针的效率对比

一、 引用1.1 引用概念 引用(reference)是为变量起了另一个名字,而不是定义一个新变量。编译器不会为引用变量开辟内存空间,它和它引用的变量共用同一块内存空间。其使用形式如下: 类型& 引用变量名(对象名) = 引用实体; eg: int ival = 1024;int &refVal = ival; // refVal 指向ival(是ival的另一个名字)int &refVal2; // 报错:引用必须被初始化 定义引用时,程序把引用和它的初始化绑定...

C++智能指针【代码】

首先得说一下为何要使用智能指针:当程序中出现了动态分配内存的时候,程序员需要在程序中用delete去释放之前动态分配的内存,如果不这么做,会造成内存泄露,例如:1 int* p = new int; 2 delete p;  虽然delete可以释放内存,但是这种需要程序员自己记住手动释放内存的方式很容易出现问题。比如当程序中出现了异常处理或者是提前结束程序的部分,留在程序末尾的delete可能就不会执行,这样的话一开始动态分配的内存就会出现内存...

C++智能指针

智能指针 https://zh-google-styleguide.readthedocs.io/en/latest/google-cpp-styleguide/magic/ 智能指针是一个通过重载 * 和 -> 运算符以表现得如指针一样的类. 智能指针类型被用来自动化所有权的登记工作, 来确保执行销毁义务到位. std::unique_ptr 是 C++11 新推出的一种智能指针类型, 用来表示动态分配出的对象的独一无二的所有权; 当 std::unique_ptr 离开作用域时, 对象就会被销毁. std::unique_ptr 不能被复制, 但可以把...

C++之指针

这里写目录标题 指针指针的大小空指针通过指针修改const指针运算指针运算数组指针指针 指针的大小 取决于编译器位数,如果是X86是32,如果是X64是64; 没有赋值的指针成为野指针,所以指针所指向的变量一般需要进行初始化,不然的话,指针指向的位置有可能是系统地址的部分。Void *p =NULL;取地址是在寄存器中,不占内存;所谓的地址实际是计算机总线,作为一个常量,不占内存;但是指针如果作为一个变量存在,是消耗内存的,比如*...

C++中野指针

我一直在思考在求职面试中,我们是否要回答得很前面才能让面试官满意,或者说见人说人话,见鬼说鬼话,可以不回复得很全面,但是回答到让人舒服,顺便吹一下好话。有时候,坐在你对面的面试官水平都未必比你好的,如果你回答的非常具体细致或者深入,那么我觉得达到的效果可能不是那么好。面试官会认为你在装逼。 C++中的野指针,指针问题是每个程序员止步的重要门槛,初学者会认为指针问题难以理解,我当初也是如此。甚至...

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

转载!原作者介绍的太完整了,转载完全为了给自己做个笔记,侵权删 https://www.cnblogs.com/wxquare/p/4759020.html 目录理解智能指针的原理智能指针的使用智能指针的设计和实现 1.智能指针的作用 C++程序设计中使用堆内存是非常频繁的操作,堆内存的申请和释放都由程序员自己管理。程序员自己管理堆内存可以提高了程序的效率,但是整体来说堆内存的管理是麻烦的,C++11中引入了智能指针的概念,方便管理堆内存。使用普...

C/C++编程笔记:什么是不透明指针?一文带你明白!【图】

什么是不透明指针? 顾名思义,不透明是我们看不到的。例如,木材是不透明的。不透明指针是指向数据结构的指针,该数据结构的内容在定义之时不公开。 跟随指针是不透明的。通过查看定义,无法知道STest结构中包含的数据。struct STest * pSTest;将NULL分配给不透明的指针是安全的。pSTest = NULL;为什么不透明的指针? 在某些地方,我们只想提示编译器“嘿!这是我们的客户将使用的某些数据结构。不用担心,客户将在准备编译单元时...

c++--this指针【代码】【图】

this指针,在成员函数中使用,指代的是当前对象 #include <iostream>using namespace std;class Box {public:// 构造函数定义//默认初始值,定义时没有赋值的情况下使用 Box(double l=2.0, double b=2.0, double h=2.0){cout <<"Constructor called." << endl;length = l;breadth = b;height = h;}void out(void){//成员函数函数中可直接使用这些变量 cout << length << endl;cout << breadth << endl;cout << height;} double Vol...

C++字符串数组中小写转大写的写法(指针)【代码】

大写字母好看 任务描述 本关任务:将一个字符串中的所有小写字母变成对应的大写字母,其它字母不变。 例如:对字符串“abc12! ef”执行函数后输出结果为“ABC12! EF” 测试说明: 测试输入:1q2w3ASD45sx~1 预期输出:1Q2W3ASD45SX~1 测试输入:as 12xfASA90[]kl{} 预期输出:AS 12XFASA90[]KL{} #include <iostream> using namespace std;void toUp(char* str);int main() {char s[1024];cin.getline(s, 1024); // 输入一行字符...

c++this指针【代码】

每一个非静态成员函数只会诞生一份函数实例,也就是说多个同类型的对象会共用一块代码 那么问题是:这一块代码是如何区分哪个对象调用自己的呢? c++通过提供特殊的对象指针,this指针,来解决上面的问题,this指针指向被调用的成员函数所属的对象 this指针是隐含每一个非静态成员函数内的一种指针 this指针不需要定义,直接使用即可 this指针的用途 当形参和成员变量同名时,可用this指针区分在类的非静态成员函数中返回对象本身,...

9.6 C++指向结构体变量的指针【图】

原创 闫小林 c语言入门到精通 1月1日收录于话题#C++代码基础95个点击上方“C语言入门到精通”,选择置顶第一时间关注程序猿身边的故事作者闫小林白天搬砖,晚上做梦。我有故事,你有酒么?C++结构体变量和指向结构体变量的指针构成链表 链表有一个头指针变量,以head表示,它存放一个地址,该地址指向一个元素。链表中的每一个元素称为结点,每个结点都应包括两个部分: 用户需要用的实际数据下一个结点的地址。经典案例:C++使用...

【C++笔记】对象模型和this指针【代码】

一、成员变量和成员函数分开存储 C++中,类内的成员变量和成员函数分开存储,只有非静态成员变量才属于类的对象空对象也会占用内存 C++编译器会给每个空对象也分配一个字节空间,是为了标志此对象占内存的位置。每个空对象也应该有一个独一无二的内存地址class Person{};cout << "size of p = " << sizeof(p) << endl;空对象占用1个字节内存只有类的非静态成员变量,属于类的对象class Person{int m_A; };cout << "size of p = " <...

c++指针学习

指针变量与其余变量的一个区别: int *i 能通过*来访问该指针,并能改变该指针所指对象的值 如int *i=&p ;cout<<*i; *i=1; 而对于其余变量如int i 不能使用*来访问 即使i存的值为一个地址 而对这种变量可使用&来获得地址 如int p=100;int *i=&p;此时i的本身的值为p的地址,而*i为p的值为100 *i=90 等同于 p=90 但如果指针指向常量 则声明该指针时的也要把它申明为指向常量的指针 如const int *p;他指向的值也为一个常量如const in...