【C++基础(十三)函数指针】教程文章相关的互联网学习教程文章

c++(4)----指针和引用、const【代码】

指针和引用都是一种复合类型。 复合类型: 基于其他类型定义的类型 基本数据类型+声明符 引用并非对象,而是一个别名,定义时必须初始化// 引用并非对象,而是一个别名 int ival =1024; int &refVal = ival; // refVal 指向ival(是ival的另一个名称) int &refVal2; //报错:引用必须被初始化int i =1024, i2=2048; int &r=i, r2=i2; //r是一个引用;r2 是 int int &r3 = i3, &r4 =i2; // r3和r4都是引用指...

C++ virtual :推迟指针指向的决定

这篇博客适合已经学过的同学再次思考和回忆,对不了解编译原理和基本编程语言基础的学者不友好 文章目录virtual根本原理什么函数可以是虚函数虚析构函数virtual关键字的实现,动态绑定实现窥览 virtual根本原理 virtual 无论是函数,还是类继承中,他的真实功能就是推迟指针指向的决定, 将在编译期的决定推迟到运行时决定,于是就有了多态的实现,多态的原理便是运行时的动态绑定。 虚基类的继承是的类变量的指针可以推迟指向,而...

C/C++可以通过指针修改常量【代码】【图】

通过教材我们知道,const常量在定义时必须初始化,且初始化之后不能再修改,例如 ,const PI = 3.14; PI = 3.1415;将会编译错误。 但其实可以通过强大的指针来修改常量 #include<iostream> using namespace std; int main() {const int a = 1;int *p = (int *)&a;*p = 2;cout<<"*q="<<*p<<",a="<<a<<endl;return 0; }可以看见a的内存地址指向的内容(*p)已经修改为2,也就是说a已经被修改为2了,但实际输出的a仍然是初始化的1(看...

async_wait传参数绑定事件调用回调函数及C++指针的黑暗面(C++服务器开发相关)【图】

async_wait传参数调用回调函数通过bind方式绑定,可以用lambda表达式代替 本来调用一次print就会失效,可以通过expires_at定义下一次的失效时间来多次执行print 需要占一位参数error_code是系统参数 async_wait形参只有一个所以需要bind绑定函数和函数参数以lambda方式效率更高:回调绑定的参数生命周期一定要足够长保证在run能够运行 如以下情况run会调用智能指针的野指针因为已经超过出了智能指针的生命周期,但不一定会出错这也...

C++堆指针栈指针【代码】【图】

C++堆指针栈指针 指针是一种灵活高效的内存访问机制。 按有无申请动态分配的方式,分为两种类别:堆指针、栈指针。 在程序中定义一个变量,它的值会被放入内存中。 如果申请使用动态分配,它的值将放到堆中。 如果没有申请动态分配,它的值将放到栈中。 tips:前提是定义了一个空指针。 1、创建堆指针: 申请动态分配使用关键字new。 p=new type;其中,p表示指针,new是关键字,type是类型名。 new返回新分配的内存单元的地址。 指针...

[C++]指针【代码】【图】

1. 指针的用处 链表 2. 指针的定义 2.1. 基本概念 指针就是指向一个变量或者指针的变量,它里面存储的值是一个内存空间的地址。当然,一个指针也可以指向指针。 2.2. 代码实现 int i = 3; int *p = &i; int **q = &p; cout<<p<<" "<<*p<<endl; cout<<q<<" "<<*q<<" "<<**q; 本程序的输出结果可能是: 0x22fec8 3 0x22fec4 0x22fec8 3 Hint: 0x22fec8就是变量i的地址 0x22fec4就是指针*p的地址 大家可以举一反三,还可以定义很多其他...

vs2017 C4703 c++使用了可能未初始化的本地指针变量“sp”

严重性 代码 说明 项目 文件 行 禁止显示状态 错误 C4703 使用了可能未初始化的本地指针变量“sp” cc32a_demo c:\users\tt2018\documents\visual studio 2017\projects\cc32a_demo\cc32a_demo\cc32a_demo.cpp 141 Shape是一个类 Shape *sp; //这样就是没有初始化 Shape *sp=nullptr; //这样就可以了。 参考: https://docs.microsoft.com/zh-cn/cpp/error-messages/compiler-warnings/compi...

C++ this指针详解(精辟)【代码】

this 是 C++ 中的一个关键字,也是一个 const 指针,它指向当前对象,通过它可以访问当前对象的所有成员。所谓当前对象,是指正在使用的对象。例如对于stu.show();,stu 就是当前对象,this 就指向 stu。下面是使用 this 的一个完整示例: 1 #include <iostream>2 using namespace std;3 class Student{4 public:5 void setname(char *name);6 void setage(int age);7 void setscore(float score);8 void show();9...

理解C++类 this 指针的例子【代码】

网上看了很多说明,还是处于半知半解的状态,看了下面这个例子才算是明白了this指针 #include <iostream>using namespace std;class Box {public:// Constructor definitionBox(double l = 2.0, double b = 2.0, double h = 2.0) {cout <<"Constructor called." << endl;length = l;breadth = b;height = h;}double Volume() {return length * breadth * height;}int compare(Box box) {return this->Volume() > box.Volume();}pri...

c++之空指针访问成员函数【代码】

#include<iostream> using namespace std; class Person { public:int age;void showClass() {cout << "这是Person类" << endl;}void showAge() {//解决方法,如果是空就直接返回if (this == NULL) {return;}cout << "年龄是:" << this->age << endl;} }; void test() {Person* p = NULL;//p->showAge();会报错,因为空指针访问成员属性不可行p->showClass(); } int main() {test();system("pause");return 0; }

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

this指针指向被调用的成员函数所属的对象。 this指针是隐含每一个非静态成员函数内的一种指针。 this指针不需要定义,直接使用即可。 用途:当函数的形参和成员变量名重名时,可以用this进行区分。 在类的非静态成员函数中返回对象本身,可使用return *this。 #include<iostream> using namespace std; class Person { public:int age;void setAge(int age) {this->age = age;}//如果不是返回Person&,注意拷贝构造函数时所说,//如...

c++--开始和引用和const和指针

命名空间 #include <iostream> using namespace std; iostream 提供一个叫命名空间的东西, 标准的命名空间是 std #include <iostream>//方式二: #if 0 using std::cout; //声明命名空间中的一个变量 using std::endl; using std::cin; #endif//方式三 using namespace std;int main(void) {int a = 0; #if 0//方式一:std::cout << "nihao shijie" << std::endl;std::cout << "nihuai shijie" << std::endl; #endifcout << "nihu...

C++ 智能指针【代码】

C++ 智能指针 unique_ptr 大概长这个样子//大概长这个样子(化简版) template<class T> class unique_ptr{T* ptr; }; unique_ptr是独占性智能指针,某个时刻只能有一个uniqueptr指向一个给定对象; 当uniqueptr被销毁时,它所指向的对象也被销毁(自动对所指向对象调用delete); uniqueptr不支持普通的拷贝和赋值操作; 如果真的需要转移所有权(独占权),需要用std::move(std::unique_ptr对象)语法,转移所有权后如果仍使用...

C++子类虚函数表指针【代码】【图】

最近看剑指offer,记录一下 #include <iostream> #include <string> #include <cctype> #include<vector> #include<list> #include<cstring> #include<typeinfo> #include<set> #include<map> #include<deque> #include<regex> #include<sstream> #include<cstdlib> #include<queue> #include<stdlib.h> #include<stdio.h> #include<stack> #include<algorithm> #include<thread> #include<mutex> #include<assert.h> using namesp...

c++几个指针使用示例【代码】

c++几个指针使用示例: 使用指针使数组逆序 #include #include <math.h> #include using namespace std; int main() { int nums[6]{15,20,25,30,35,50}; int* ptr = nums; int* ptr1; ptr1 = nums+ sizeof(nums) / sizeof(int)-1; int temp; while(ptr<ptr1) { temp = *ptr;*ptr = *ptr1;*ptr1 = temp;ptr++;ptr1--; } for (int i = 0; i < sizeof(nums) / sizeof(int); i++) {cout << nums[i]<<endl;} cout << sizeof(nums)/size...