
c++
文章平均质量分 59
Poison老师
写了十多年代码,也创业了多次,从底层到应用层
展开
-
C++ 的自动类型auto类型推断decltype空指针nullptr 快速遍历for in
目录auto 自动类型decltype 推断表达式的类型nullptr 空指针,专门针对指针做的符号for in快速遍历 ,语法格式是for (:)C++ 11以后的一下新语法常用的如下:auto 自动类型这个相当于swift里面的var ,自动通过右边表达式推断出类型.示例代码如下:auto a = 5;//自动把a推断为 int类型a = 6.14;cout<< a <<endl; //输出6,因为a 是int类型auto d = 3.14;//把d当成doubl原创 2021-10-22 16:53:29 · 2110 阅读 · 0 评论 -
C++的4种类型转换const_cast dynamic_cast static_cast reinterpret_cast教程
目录const_castdynamic_caststatic_castreinterpret_castC++除了强制类型转换意外还有4种使用关键字的类型转换示例代码提供3个类,在下面4种类型转换中的示例代码中都要使用,Person是Student的父类,并且有虚函数,构成了多态.Animal不跟任何类有关系,用来实验,没有继承效果的类型转换:using namespace::std;class Person{public: int age; Person(int a):ag原创 2021-10-19 10:35:17 · 363 阅读 · 0 评论 -
c++函数模板和类模板C++的泛型(增加了xcode和vc++下重载<<的不同代码)
目录函数模板代码示例类模板代码示例c++用模板实现泛型,关键字是 template 相当于其他语言的泛型函数模板模板当调用的时候要给出明确类型,然后编译器根据类型生成多个不同的函数定义,例如调用了3次,不同的3个类型,那么编译器就在汇编的时候call了3个不同的函数地址,都是不同的类型函数定义格式 template 或者 template typename 和 class 可以互换,完全等价template <typename T>template <class T>原创 2021-10-14 16:51:04 · 244 阅读 · 0 评论 -
c++运算符重载汇总,类成员和全局运算符重载,单目前置后置,cout<<,cin>>,仿函数,函数对象教程
目录运算符重载的格式全局 双目运算符 代码示例类里面的成员函数重载运算符类成员双目运算符+,+=,==,!= 的实现类成员函数的无参数的运算符重载分为操作符前置后后置,例如++i,i++单目运算符前置,就是操作符在前面,例如 ++i,--i单目运算符后置,就是运算符在后面,例如i++,i--,有固定的格式, 在运算符()后面加(int)重载输入和输出 << >>重载赋值运算符=,在子类中要调用父类的=赋值运算符重载仿函数 ,函数对象,通过重载()实现不能重载的运算符运算符重载的格原创 2021-10-14 14:37:17 · 879 阅读 · 0 评论 -
C++局部类的教程和注意事项
目录局部类定义注意点代码示例局部类定义在函数内部定义的类,是局部类注意点只能在局部类所在的函数内创建对象,所在函数外无法创建局部类的对象.因为局部类在函数内部,所以函数释放的时候,函数里面创建的类对象也被释放了.局部类不能定义static静态变量,因为静态变量可以在全局区初始化赋值,而局部类定义在函数里面,函数释放就会销毁,所以不能定义静态变量局部类可以使用所在函数内的静态变量局部类不能直接使用所在函数内的局部变量代码示例#include <iostream>usin原创 2021-10-13 09:36:13 · 200 阅读 · 0 评论 -
c++中友元函数和友元类教程
目录友元函数使用方法友元函数的作用代码示例友元函数使用方法在类内用friend声明的函数,可以访问类的所有成员和方法,需要在类外定义.友元函数的作用可以访问类内的成员,可以访问私有属性,破坏了类的封装性代码示例...原创 2021-10-13 09:21:29 · 156 阅读 · 0 评论 -
c++函数形参const引用和非const引用的教程
目录函数形参 const 引用居多的原因普通的函数形参引用,不带const的例子函数形参是const引用的例子下面例子是是函数形参是对象类型,const 引用依然可以接受const 和 非const对象函数形参 const 引用居多的原因大部分c++函数形参如果是引用,都是const类型的引用,为什么呢?答案就是const类型的引用可以,接受const类型的参数,和非const类型的参数.下面代码距离说明普通的函数形参引用,不带const的例子下面代码函数传入const类型的参数直接报错了.i原创 2021-10-11 17:33:42 · 3206 阅读 · 2 评论 -
C++ 拷贝构造函数的在继承中的总结
目录拷贝构造函数字面意思拷贝构造函数基本格式:下面代码证明不写拷贝构造函数,系统自动生成拷贝构造函数子类继承父类的时候拷贝构造函数时,如果成员变量没有默认值,必须在初始化列表中把父类的构造函数初始化父类中的成员变量都有默认值,子类的拷贝构造函数不需要调用父类的构造函数拷贝构造函数字面意思拷贝构造函数,基本意思就是,用一个对象,初始化另外一个对象调用的函数,就是拷贝构造函数.只有对象被创建的时候才会调用,用已经存在的对象赋值给另一个对象的时候不会调用拷贝构造函数.拷贝构造函数基本格式:基本格式是:构造原创 2021-09-29 11:55:14 · 3058 阅读 · 0 评论 -
c++中菱形继承中出现的问题和虚继承虚基类使用
目录普通继承关系的菱形继承如下虚基类虚继承利用虚继承解决,保存多份不同成员变量的问题普通继承关系的菱形继承如下基类Person被public继承以后会生成2份成员变量,再给孙子类的会保存,代码如下,通过代码能看到,孙子类的FarmerWorker的 3个age的内存地址不同,这个不是我们想要的结果.我们想要的结果是基类Person里面的成员变量age在子类和孙子类中都只保存一份.#include <iostream>using namespace::std;class Perso原创 2021-09-15 10:03:48 · 277 阅读 · 0 评论 -
C++ 抽象类 和纯虚函数详解
这里写目录标题纯虚函数的描述抽象类的描述纯虚函数的描述在class或者struct中,的函数,只定义了函数类型,但是没有函数体,并且给函数初始化 = 0 如下: speak()和run()就是2个纯虚函数class Person{public: virtual void speak() = 0;//纯虚函数,只定义了函数类型,没有函数体.相当于oc和swift中的协议里定义的方法 virtual void run() = 0;};抽象类的描述C++相当于oc和swift中的原创 2021-09-13 17:29:02 · 647 阅读 · 0 评论 -
C++中多态实现与其他语言的区别
目录多态的解释C++实现多态和其他语言实现多态的区别多态的解释运行相同的代码,但是执行了不同的操作.具体来说就是,C++中是父类指针指向子类对象之后,父类指针就能调用子类中重写父类的方法.C++实现多态和其他语言实现多态的区别c++默认情况下是没有多态的,其他语言默认就能使用多态c++通过虚函数virtual关键字,实现多态.其他语言不需要virtual,但是可能会用到overwrite重写关键字来让子类重写父类方法下面是示例代码#include <iostream>usi原创 2021-09-13 09:39:46 · 141 阅读 · 0 评论 -
C++中构造函数析构函数的注意事项汇总
目录1. class构造和析构函数必须被public修饰,否则不能被外面调用,因为class默认是private,结构体struct默认是public2.new 和 delete 创建和删除的对象的指针 会调用 构造函数和 析构函数,malloc 和 free创建和删除的对象指针不会调用构造和析构函数3. 析构函数里面用来回收new 或者 malloc申请的堆空间,栈空间不需要回收4.子类继承父类以后,调用子类构造函数的时候,如果父类有构造函数,会默认调用无参数的构造函数.如果没有就会报错5.强制让子类调原创 2021-08-10 17:24:30 · 1037 阅读 · 0 评论 -
C++ 3种继承方式访问属性汇总
目录总的规律:代码举例总的规律:1.从父类继承过来的访问属性,取决于父类的继承方式 , 加成员本身的访问属性2.访问属性,按照访问范围从大到小: public > protected > private .访问属性 = 父类继承方式,和 属性在父类本身的访问属性 最小的访问属性具体举例只有下面3种组合:public + private = privatepublic + protected = protectedprotected + private = private概念总原创 2021-08-10 10:56:54 · 498 阅读 · 0 评论 -
c++ const引用 和 引用数组总结
目录const 和 数据类型可以交换跟指针一样,const修饰的是右边的变量常引用可以指向常量,当做常量使用常引用 指向 表达式常引用作为函数形参可以接收 const类型 和 非 const类型,常引用 和 非const引用可以构成函数重载指针形参的const和非const也能构成重载,跟const 引用一样普通的形参变量 const和 非const 无法构成重载引用数组的2种格式:const 引用,又叫常引用,引用的本质是指针,所以很多东西都是相通的.const 和 数据类型可以交换下面代码 int原创 2021-07-08 15:55:11 · 1070 阅读 · 0 评论 -
arm汇编储存指令str stur和读取指令 ldr ldur的使用,对应xcode c++中的代码反汇编教程
目录str 和 stur 存储指令ldr 和 ldur 读取指令经常会看到xcode 返回变里面出现 stur 和 ldur之类的指令,网上资料不太多,今天做一下总结:str 和 stur 存储指令这是一对 存储指令,作用是把寄存器里的内容存储到右边地址中:用法格式如下:str 寄存器,[内存地址]stur 寄存器,[内存地址]例如下面汇编代码str w11, [x10, #0xa0]stur w12, [x29, #-0x18]从功能出发,这2条指令一般对应,存储数值,例如给变原创 2021-07-06 10:49:21 · 8495 阅读 · 2 评论 -
c++中的引用变量,以及引用变量作为函数形参的教程
目录引用变量的说明:引用变量的格式:引用变量作为函数形参的好处引用变量的说明:1.引用的作用是给变量起别名,可以当做变量来用.只能在引用初始化的时候给引用变量赋值2.引用的本质是弱化的指针,因为只能在引用初始化的时候给引用变量赋值,所以相当于,指针只能在最开始赋值的时候把变量地址赋值给引用变量,之后就不能再更改指针变量的地址了.引用变量的格式:数据类型 & 变量名 = 变量;// 引用变量必须在定义的时候就用 = 变量, 来初始化,因为初始化以后就不能赋值了,所以必须在定义的时候就赋值.原创 2021-07-05 16:22:44 · 2654 阅读 · 1 评论 -
c++中const指针的6中格式变化教程
目录前言心法口诀:1.int * const p = &a2. int const *p = &a3. const int const *p = &a4.const int *p = &a5.const int * const p = &a6.int const * const p = &a前言本文把 数据类型 + const + *p 交换位置出现的6种不同组合,做了讲解心法口诀:1.右边原则,const 修饰右边的元素不能改变.2.变量类型和原创 2021-07-05 13:42:43 · 127 阅读 · 0 评论 -
extern “C“ #ifdef __cplusplus #endif在c++和C混编时候的作用
目录前言extern "C"详解#ifdef __cplusplusdemo 地址:前言本文使用的c\c++符合c++标准,代码写在xcode平台,截图的汇编指令也是arm芯片的汇编首先看一下我们要做测试的主函数//// main.cpp// externC_ifndef_define_endif_pragma onceDemo//// Created by 谭迪文 on 2021/6/30.//#include <iostream>#include "calcu原创 2021-06-30 13:38:14 · 1196 阅读 · 0 评论 -
swift和c++相互调用方法1教程附demo
目录上一个教程讲了在xcode中,用c来调用c++代码,是为了这篇教程做铺垫,因为swift调用c++的方法1,就是用swift调用c代码整体思路:因为swift不能直接调用c++,但是可以调用c,所以我们让swift调用c,再用c调用c++.强烈建议查看上面的文章,里面有c调用c++的原理说明.swift调用 C++ 方法建立桥接文件swift中的调用上一个教程讲了在xcode中,用c来调用c++代码,是为了这篇教程做铺垫,因为swift调用c++的方法1,就是用swift调用c代码#传送门上一个我写原创 2021-06-26 14:24:45 · 3431 阅读 · 0 评论