自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 收藏
  • 关注

原创 c++中子类调用父类方法的方法

在c++中子类调用父类方法的方法和java所用的方式不一样,java使用super指针就可以调用,c++中虽然也有this指针,但是不能用super去调用父类方法。c++用的方法为:fatherClass::fatherFunction().1、java中的方法public Expr visit(BinaryExpr e) { if (isTupleComparison(e)) { if (e.op == BinaryOp.EQUAL) { return equal;

2020-05-29 10:49:47 7428

原创 C++ static_cast、dynamic_cast、const_cast和reinterpret_cast(四种类型转换运算符)

为了使潜在风险更加细化,使问题追溯更加方便,使书写格式更加规范,C++ 对类型转换进行了分类,并新增了四个关键字来予以支持,它们分别是:使用格式统一为xxx_cast<new_type>(expr).new_type为目标类型,data为要转的表达式。注意:1、static_cast不能用于无关类型之间的转换,因为无关类型之间的转换是有风险的。比如:int转double可以,但是int* 转 double* 就不行,double转int虽然可以,因为double.

2020-05-25 10:42:07 286

原创 c++中的虚函数(virtual)

虚函数是指一个类中你希望重载的成员函数,当你用一个基类指针或引用指向一个继承类对象的时候,你调用一个虚函数,实际调用的是继承类的版本。派生类不能改变virtual现状,基类函数没有virtual的时候派生类不能声明成有,基类有virtual的时候派生类声明不声明都一样.#include<iostream>class base{public: virtual void print1(){std::cout << "基类" << std:.

2020-05-22 10:28:00 709

转载 c++中也有java中的匿名内部类

什么是内部类将类写在其他类的内部,可以写在其他类的成员位置或局部位置,这种写在其他类内部的类就称为内部类。其他类也称为外部类。什么时候使用内部类在描述事物时,若一个事物内部还包含其他可能包含的事物,比如在描述汽车时,汽车中还包含有发动机,这时发动机就可以使用内部类来描述。 class 汽车 { //外部类 class 发动机 { //内部类 } }内部类的分类内部类分为成员内部类与局部内部类。我们定义内部类时,就是一个正常定义类的过程...

2020-05-21 17:04:09 1708 2

原创 c++中explicit关键字的介绍

1、C++中的关键字explicit主要是用来修饰类的构造函数,被修饰的构造函数的类,不能发生相应的隐式类型转换,只能以显示的方式进行类型转换。类构造函数默认情况下声明为隐式的即implicit,隐式转换即是可以由单个实参来调用的构造函数定义了一个从形参类型到该类类型的隐式转换。编译器在试图编译某一条语句时,如果某一函数的参数类型不匹配,编译器就会尝试进行隐式转换,如果隐式转换后能正确编译,编译器就会继续执行编译过程,否则报错。2、当类的声明和定义分别在两个文件中时,explicit只能写在在声明中,不

2020-05-18 18:38:48 347 1

转载 c++中std::move()的用法

std::move函数可以以非常简单的方式将左值引用转换为右值引用。通过std::move,可以避免不必要的拷贝操作。std::move是为性能而生。std::move是将对象的状态或者所有权从一个对象转移到另一个对象,只是转移,没有内存的搬迁或者内存拷贝。如string类在赋值或者拷贝构造函数中会声明char数组来存放数据,然后把原string中的 char 数组被析构函数释放,如果a是一个临时变量,则上面的拷贝,析构就是多余的,完全可以把临时变量a中的数据直接 “转移” 到新的变量下面即

2020-05-18 18:14:33 1280

原创 一些操作符的含义

要是不知道操作符的含义可以对照一下,但是不同语言会有不一样的,但大多都差不多含义。这是ocaml语言的操作符含义:+整型加法- 整型减法~-或- 整型负* 整型乘法/ 整型除法,若除零则会raise一个Division_by_zeromod 整型同余,若第二个参数为0则会raise一个Division_by_zeroland 整型的逐位逻辑与lor 整型的逐位或lxor 整型的逐位异或lsl 整型的逻辑左移lsr 整型的逻辑右移asr ...

2020-05-17 16:25:51 422

原创 c++中如何动态生成变量名

这个问题也困扰了我好久,要是真的去动态的生成x0,x1,x2........是真的不可能。但是会有办法做到相似效果。比如想要做到如下:for(int i = 0; i < _vector.size(); i++) //_vector是一个vector对象{ auto v = _vector.at(i); auto xi = get_name(v); //想要在这个循环中生成x0,x1,x2,x3........}一个最直观最简单的办法就是利用数组。int x[_v

2020-05-16 17:46:06 7814 3

原创 c++中子类和父类的强制转换

只有子类转换成父类,父类不能转换成子类。因为子类是从父类继承而来,子类中包含父类中所有成员。而如果父类可以转换成子类,意味着将子类中将有一部分是未知的成员。这是不被允许的。要是确定父类转换成子类你能保证是正确的,可以用强制转换:子类强制转换为父类用static_cast<>:(a : public A)A * book;a* name;book = static_cast<A*>(name);父类转换为子类用dynamic_cast<>:

2020-05-12 09:05:03 8916

原创 ubuntu升级或按安装cmake

可以用sudo apt-get install cmake但是这不能选择版本用以下方法:wget https://cmake.org/files/v3.9/cmake-3.9.2.tar.gztar -xvf cmake-3.9.2.tar.gzcd cmake-3.9.2./configuresudo makesudo make installhash -rcmake --version卸载老版本camke 见链接:https://blog.csdn..

2020-05-11 12:54:23 778

转载 ubuntu卸载软件(cmake)

cmake的版本在ubuntu编译程序时至关重要,特别是编译他人的工程时,有时必须保证cmake的版本与工程所有者相同。对于cmake的卸载问题,现在一般博客中给的指导是:sudo apt-get remove cmake但是此句指令是针对于通过sudo apt-get install cmake 安装的用户。如果是从源码安装,以上删除方式则不能成功删除,因此对于源码安装的cmake,博主经过实践,首先到cmake的安装目录下找到install_manifest.txt,txt中保存了所有cmake

2020-05-11 12:51:20 4215

原创 主机和虚拟机之间实现文件夹共享

1、设备--->文件夹共享--->固定分配--->新建一个共享文件夹填好要共享的主机文件夹选择自动挂载2、会在文件里面看见共享文件夹但是点击的时候说没有权限查看解决办法:将自己用户名加进去命令:sudo adduser yis vboxsfyis是我的用户名,然后就行了。...

2020-05-10 19:32:09 672

原创 ubuntu安装flex和bison(附有flex-2.6.4.tar.gz)

bison可以直接用命令装:sudo apt-get install bisonflex建议用源码装:下载flex-2.6.4.tar.gz后解压:sudo tar -zxvf flex-2.6.4.tar.gz进入解压目录:cd flex-2.6.4再运行命令:./configuremakemake installflex-2.6.4.tar.gz下载链接永久有效提取码: ah24...

2020-05-10 13:46:06 4490 4

原创 c++中string的截取、替换和查找操作

1. 截取子串s.substr(pos, n) 截取s中从pos开始(包括0)的n个字符的子串,并返回s.substr(pos) 截取s中从从pos开始(包括0)到末尾的所有字符的子串,并返回2. 替换子串s.replace(pos, n, s1) 用s1替换s中从pos开始(包括0)的n个字符的子串3. 查找子串s.find(s1) 查找s中第一次出现s1的位置,并返回(包括0)s.rfind(s1) 查找s中最后次出现s1的位置,并返回(包括0)s.find_first...

2020-05-09 10:41:39 281

原创 java中map的computeIfAbsent()函数

一、HashMap computeIfAbsent(Key, Function) 的这个方法,是被用来计算给定key,给定映射函数的的值。如果,key之前并没有映射到一个值,或者映射到null,那么,就用计算出来的值放到这个hashmap中。 如果这个映射函数返回null,那么不添加任何k-v对 如果在计算过程中,抛出异常,那么不添加任何k-v对 在计算过程中,无法修改此map 方法会抛出ConcurrentModificationException ,如果在计算过程中,...

2020-05-09 09:43:30 1762

原创 c++队列queue的基本操作

back() 返回最后一个元素empty() 如果队列空则返回真front() 返回第一个元素pop() 删除第一个元素push() 在末尾加入一个元素size() 返回队列中元素的个数

2020-05-09 09:13:41 594

原创 java中队列queue的阻塞操作

add() 增加一个元索如果队列已满,则抛出一个IIIegaISlabEepeplian异常remove() 移除并返回队列头部的元素如果队列为空,则抛出一个NoSuchElementException异常element() 返回队列头部的元素如果队列为空,则抛出一个NoSuchElementException异常offer() 添加一个元素并返回true如果队列已满,则返回falsep...

2020-05-09 09:11:44 450

原创 c++中比较两个std::string对象是否相等

在java中比较两个string对象是否相等可以直接调用函数equals()if(name1.equals(name2)) //name的声明忽略{ print("相等");}而在c++中也很简单,用"=="就可以实现if(name1 == name2){ std::cout<<"相等"<<std::endl;}...

2020-05-08 16:15:23 10941

原创 c++中将一个vector对象插入另一个vector中

c++中的vector的插入操作有几个方法:vector.insert(pos,elem); //在pos位置插入一个elem元素的拷贝,返回新数据的位置。vector.insert(pos,n,elem); //在pos位置插入n个elem数据,无返回值。vector.insert(pos,beg,end); //在pos位置插入[beg,end)区间的数据,无返回值...

2020-05-05 19:33:39 27609 1

空空如也

空空如也

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

TA关注的人

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