自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(108)
  • 资源 (1)
  • 收藏
  • 关注

原创 C++ 关键字

摘要:简要的介绍 C++ 一些特别的关键字,并记录一些常规用法,以后详细记录其使用方法

2024-02-04 11:24:20 374

原创 C++ 异常

提供了异常机制来保证程序的运行的安全。当某段代码检测到异常时,就会抛出一个异常,而另一段代码就会捕获到该异常,并进行相应的操作。里面的程序,跳过了第三调用 (不管程序是否正确)。这样的检测机制方便程序员写出鲁棒性的代码。结果显示:第一次正则执行,第二次检测到异常,直接抛出异常执行。来辅助程序员捕获异常。

2024-02-04 11:12:23 379

原创 C++指针

C++中有两种重要的智能指针分别是:std::unique_ptr和std::shared_ptr。我们以std::unique_ptr为例简单的介绍一下,unique_ptr类似于普通指针,只属于它指向的对象。unique_ptr 将对象 taskPtr 接受原始指针作为参数。现在当main函数退出时,该对象超出作用范围就会调用其析构函数,在unique_ptr 对象 taskPtr 的析构函数中,会删除关联的原始指针,这样就不用专门 delete Task 对象了。创建unique_ptr对象。

2024-02-02 12:07:51 1261

原创 C 语言探究-泛型指针

通常情况下,C只允许相同类型的指针之间进⾏转换。例如:⼀个字符型指针sptr(⼀个字符串)和⼀个整型指针iptr,我们不允许把sptr转换为iptr或把iptr转换为sptr。但是,泛型指针能够转换为任何类型的指针,反之亦然。因此,如果有⼀个泛型指针gptr,就可以把sptr转换为gptr或者把gptr转换为sptr。在C语⾔中,通常声明⼀个void指针来表⽰泛型指针。

2023-12-26 10:54:21 399 1

原创 C++(运算符重载<<)

左移运算符重载可以输出自定义数据类型#include <iostream>using namespace std;class Person{ friend ostream& operator<<(ostream& out,Person &p);public: Person(int a, int b) { this-&gt...

2021-01-20 12:12:00 63

原创 C++(运算符重载+)

1.加号运算符重载实现自定义数据类型的加运算#include <iostream>using namespace std;class Person {public: int m_A, m_B; //1.成员函数重载+号 Person operator+(const Person &p) { Person temp; temp.m_A = th...

2021-01-19 11:12:00 47

原创 C++(成员函数做友元)

成员函数做友元成员函数做友元和类做友元十分相似示例:#include <iostream>#include <string>using namespace std;class Building;class goodGay{public: goodGay(); void visit();//只让visit函数作为Buildin...

2020-09-17 09:30:00 28

原创 C++(类做友元)

类做友元类做友元后可以访问另一个类的私有成员示例:#include <iostream>#include <string>using namespace std;class Building;class goodGay{public: goodGay(); void visit();private: Build...

2020-09-16 01:47:00 17

原创 CUDA---Arrayfire---添加cuda kernel

Arrayfire 添加一维cuda kernel1.利用Arrayfire丰富函数,又保持cuda kernel的灵活性,在编程的时候需要添加cuda kernel 2.在arrayfire中添加cuda kernel需要注意几点:在.cu文件中包含头文件"af/cuda.h"使用af::eval() 确保所有的JIT kernels已经执行完成使用array::dev...

2020-09-16 00:19:00 34

原创 CUDA--Arrayfire--类型转换

Arrayfire与cucomplex数据之间的转换转换目的:Arrayfire进行矩阵变换时有C++借口函数方便调用;CUDA提供的cublas函数属于底层一些的函数,使用起来非常不方便;cucomplex数据类型与cdouble中的类型一致,可以方便我们定制自己的kernel而且可以使用Arrayfire中的函数。cdouble To cucomplex示例:#includ...

2020-09-15 23:14:00 38

原创 C++(友元)

全局函数做友元生活中你的家有客厅(Public),有你的卧室(Private)客厅所有来的客人都可以进去,但是你的卧室是私有的,也就是说只有你能进去但是呢,你也可以允许你的好闺蜜好基友进去。在程序里,有些私有属性 也想让类外特殊的一些函数或者类进行访问,就需要用到友元的技术友元的目的就是让一个函数或者类 访问另一个类中私有成员友元的关键字为 friend友元的三种实现全局函数...

2020-09-15 01:01:00 18

原创 C++(const修饰成员函数)

const修饰成员函数常函数:成员函数后加const后我们称这个函数为常函数常函数内不可以修改成员属性成员属性声明时加关键字mutable后,在常函数中依然可以修改常对象:声明对象前加const称该对象为常对象常对象只能调用常函数示例:#include <iostream>using namespace std;class Person{publi...

2020-09-10 23:09:00 20

原创 C++(空指针访问成员函数)

空指针访问成员函数C++中空指针也是可以调用成员函数的,但是也要注意有没有用到this指针;如果用到this指针,需要加以判断保证代码的健壮性示例:#include <iostream>using namespace std;//空指针访问成员函数class Person{public: void ShowClassName() { ...

2020-09-09 22:43:00 19

原创 C++(this指针概念)

this 指针C++中成员变量和成员函数是分开存储的,每一个非静态成员函数只会诞生一份函数实例,也就是说 多个同类型的对象会共用一块代码区问题:这一块代码是如何区分哪个对象调用自己的呢?C++通过提供特殊的对象指针,this指针,解决上述问题。 this指针指向被调用的成员函数所属的对象this指针是隐含每一个非静态成员函数内的一种指针this指针不需要定义,直接使...

2020-09-09 00:01:00 19

原创 C++(C++对象模型和this指针)

成员变量和成员函数分开存储在C++中,类内的成员变量和成员函数分开存储,只有非静态成员变量才属于类的对象上示例:#include <iostream>using namespace std;class Person{public: Person() { m_A=0; } //非静...

2020-09-08 23:42:00 21

原创 C++(静态成员)

静态成员静态成员就是在成员变量和成员函数前加上关键字static,称为静态成员静态成员分为:静态成员变量所有对象共享同一份数据在编译阶段分配内存类内声明,类外初始化静态成员函数所有对象共享同一个函数静态成员函数只能访问静态成员变量示例1 :静态成员变量#include <iostream>using namespace std;...

2020-09-07 23:32:00 19

原创 C++(类对象作为类成员)

类对象作为类成员C++类中的成员可以是另一个类的对象,我们称该成员为对象成员例如:class A {};class B { A a;}B类中有对象A作为成员,A为对象成员,那么当创建B对象时,A与B的构造和析构的顺序是谁先谁后?示例:#include <iostream>#include <string>using namespa...

2020-09-07 23:23:00 26

原创 Math(2)---Eigen修改稀疏矩阵中的值

稀疏矩阵非零元素的修改1.稀疏矩阵CCS存储中会用一块连续的内存空间,存储非零元素2.稀疏矩阵CCS格式中,还会有两块区域a.一块用来存储行下标b.一块用来存储非零元素的偏移量3.利用Eigen库函数函数找到这些内存空间的指针,就可以实现元素值的修改示例:#include <iostream>#include <Eigen/Sparse>using...

2020-09-07 06:53:00 58

原创 C++(初始化列表)

初始化列表作用:C++提供了初始化列表语法,用来初始化属性语法: 构造函数():属性1(值1),属性2(值2),属性3(值3)...{}示例:#include <iostream>using namespace std;class Person{ public: //传统方式初始化 //Person(int a, int b...

2020-09-06 23:56:00 25

原创 Math(1)---Eigen稀疏矩阵乘法

Eigen稀疏矩阵乘法稀疏矩阵能够节省存储空间;Eigen中稀疏矩阵的存储方式:CRS, CCS;稀疏矩阵缩短遍历元素的时间。Eigen稀疏矩阵乘以向量计算公式: \(MatResult = Matsparse*Vec\)利用Eigen可以直接根据公式计算出来,但是笔者想弄楚,Eigen是怎样实现的,于是用迭代法实现计算示例:#include <Eigen/Spa...

2020-09-06 05:52:00 105

原创 C++(深拷贝与浅拷贝)

深拷贝与浅拷贝浅拷贝:简单的赋值拷贝操作深拷贝:在堆区重新申请空间,进行拷贝操作示例:#include <iostream>using namespace std;class Person{public: //无参构造函数 Person(){ cout<<"无参构造函数!"<<endl; ...

2020-09-05 23:31:00 16

原创 C++(构造函数调用规则)

构造函数调用规则默认情况下,C++编译器至少给一个类添加3个函数1.默认构造函数(无参,函数体为空)2.默认析构函数(无参,函数体为空)3.默认拷贝构造函数,对属性进行值拷贝构造函数调用规则如下:1. 如果用户定义有参构造函数,c++不在提供默认无参构造,但是会提供默认拷贝构造2. 如果用户定义拷贝构造函数,c++不会再提供其他构造函数示例:#include &lt...

2020-09-05 23:20:00 17

原创 C++(拷贝函数调用时机)

拷贝函数调用时机C++中的拷贝构造函数调用时机通常有三种情况1.使用一个已经创建完毕的对象来初始化一个新对象2.值传递的方式给函数参数传值3.以值方式返回局部对象示例:#include <iostream>using namespace std;class Person {public: Person() { cout << "无参构造函数!...

2020-09-03 23:41:00 18

原创 C++(构造函数的分类和调用)

构造函数的分类和调用两种分类方式1.按参数分为:有参构造和无参构造2.按类型分为:普通构造和拷贝构造三种调用方式1.括号法2.显示法3.隐式转换法示例://1、构造函数分类// 按照参数分类分为 有参和无参构造 无参又称为默认构造函数// 按照类型分类分为 普通构造和拷贝构造#include <iostream>using namespac...

2020-09-03 00:04:00 13

原创 C++(构造函数和析构函数一)

构造函数和析构函数对象的初始化和清理也是两个非常重要的安全问题一个对象或者变量没有初始状态,对其使用后果是未知同样的使用完一个对象或者变量,没有及时清理,也会造成一定的安全问题c++利用了构造函数和析构函数解决上述问题,这两个函数将会被编译器自动调用,完成对象初始化和清理工作。对象的初始化和清理工作是编译器强制要我们做的事情,因此如果我们不提供构造和析构,编译器会提供编译器提供的...

2020-09-02 00:13:00 14

原创 C++(成员属性设置为私有)

成员属性设置为私有优点1: 将所有成员属性设置为私有,可以自己控制读写权限优点2: 对于写权限,我们可以检测数据的有效性示例:#include <iostream>#include <string>using namespace std;class Person{public: //姓名设置可读可写 void setName(...

2020-09-01 00:16:00 25

原创 C++(struct和class的区别)

struct和class的区别在c++中struct和class唯一的区别就在于默认的访问权限不同区别:struct 默认权限为公共class 默认权限为私有#include <iostream>using namespace sted;class C1{ int m_A; //默认是私有};struct C2{ int m_A...

2020-08-31 23:47:00 16

原创 数据结构之顺序栈实现进制转换

栈的应用进制转换1.需要用到前面博文顺序栈基本操作示例:#include <iostream>#include <stdio.h>using namespace std;#define STACK_INT_SIZE 10 //存储空间初始分配量#define STACK_INTCREMENT 2 //存储空间分配增量#define N 16 ...

2020-08-30 09:08:00 24

原创 C++(权限)

C++权限:类在设计的时候,可以把属性和行为放在不同的权限下,加以控制访问权限有三种:1.public 公共权限2.protected 保护权限3.private 私有权限示例://三种权限//公共权限 public 类内可以访问 类外可以访问//保护权限 protected 类内可以访问 类外不可以访问//私有权限 private 类内...

2020-08-29 23:59:00 15

原创 C++(设计一个学生类示例)

示例:设计一个学生类,属性有姓名和学号,可以给姓名和学号赋值,可以显示学生的姓名和学号示例代码://学生类class Student {public: void setName(string name) { m_name = name; } void setID(int id) { m_id = id; } void showStudent() { cout &l...

2020-08-29 23:54:00 14

原创 C++(封装一)

类和对象C++面向对象的三大特性:封装、继承、多态C++认为万事万物皆为对象,对象上有其属性和行为例如:​ 人可以作为对象,属性有姓名、年龄、身高、体重...,行为有走、跑、跳、吃饭、唱歌...​ 车也可以作为对象,属性有轮胎、方向盘、车灯...,行为有载人、放音乐、放空调...​ 具有相同性质的对象,我们可以抽象称为类,人属于人类,车属车类封装封装的意义封装是C++面向对象的...

2020-08-29 02:52:00 11

原创 数据结构之链式栈(二)

链式栈1.链式栈,可以看作是链表的特殊操作2.链式栈用链表实现,同样满足先进后出说明:本例采用带头节点的链表实现示例:#include <iostream>#include <stdio.h>#include <malloc.h>using namespace std;typedef int SElemType;struct ...

2020-08-28 10:52:00 15

原创 C++(函数重载二)

函数重载注意事项1.引用作为重载条件2.函数重载碰到默认参数示例://函数重载注意事项//1、引用作为重载条件#include <iostream>using namespace std;void func(int &a){ cout << "func (int &a) 调用 " << endl;}void fu...

2020-08-27 21:35:00 14

原创 C++(函数重载一)

函数重载作用: 函数名可以相同,提高复用性函数重载满足条件:1.同一个作用域下2.函数名称相同3.函数参数类型不同 或者个数不同 或者顺序不同注意: 函数的返回值不可以作为函数重载的条件示例://函数重载需要函数都在同一个作用域下void func(){ cout << "func 的调用!" << endl;}void func...

2020-08-27 21:31:00 13

原创 数据结构之顺序栈(一)

顺序栈1.顺序栈是线性结构;2.满足先进后出的特点。示例:#include <iostream>#include <stdio.h>using namespace std;#define STACK_INT_SIZE 10 //存储空间初始分配量#define STACK_INTCREMENT 2 //存储空间分配增量typedef int S...

2020-08-26 10:58:00 12

原创 C++(占位参数)

占位参数1.C++函数的形参列表里可以有占位参数,用来做占位,调用函数时必须填补该位置语法: 返回值类型 函数名(数据类型){}示例:://函数占位参数 ,占位参数也可以有默认参数void func(int a, int) { cout << "this is func" << endl;}int main() { func(10,10); //...

2020-08-26 09:56:00 11

原创 C++(函数默认参数)

函数默认参数1.在c++中,函数的形参列表中的形参是可以有默认参数的2.语法 返回值类型 函数名 (参数=默认值){}示例:int func(int a, int b = 10, int c = 10) { return a + b + c;}//1. 如果某个位置参数有默认值,那么从这个位置往后,从左向右,必须都要有默认值//2. 如果函数声明有默认值,函数实现的时候就...

2020-08-25 02:35:00 12

原创 C++(引用六)

常量引用作用: 常量引用主要用来修饰形参,防止误操作在函数形参列表中,可以加const修饰形参,防止形参改变实参示例://引用使用的场景,通常用来修饰形参void showValue(const int& v){ //v+=10; cout<<v<<endl;}int main(void){ //int&am...

2020-08-25 02:31:00 12

原创 C++(引用五)

引用的本质本质:引用的本质在c++内部实现是一个指针常量示例:#include <iostream>using namespace std;//发现是引用,转换为 int* const ref = &a;void func(int& ref){ ref = 100; // ref是引用,转换为*ref = 100}int main(){ i...

2020-08-23 05:10:00 12

原创 C++(引用四)

引用做函数返回值作用:引用可以作为函数的返回值存在注意:不要返回局部变量的引用用法:函数调用可以做左值示例:#include <iostream>using namespace std;//返回局部变量引用int& test01() { int a = 10; //局部变量 return a;}//返回静态变量引用int&amp...

2020-08-23 05:07:00 12

keil使用手册

熟悉软件keil的用法,理解keil的实质

2016-02-26

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除