- 博客(22)
- 收藏
- 关注
原创 STL总结二
stack容器 简介 stack是堆栈容器,是一种“先进后出”的容器。 stack是简单地装饰deque容器而成为另外的一种容器。 栈不能遍历,不支持随机随机存取,只能通过top从栈顶获取和删除元素 stack的push()与pop()方法 stack.push(elem); //往栈头添加元素 stack.pop(); //从栈头移除第一个元素 stack对象...
2020-03-13 13:03:31
294
原创 STL总结一
基本概念 STL(标准模板库)分三类:algorithm(算法)、container(容器)和iterator(迭代器) STL详细的六大组件:容器、算法、迭代器、仿函数、适配器、空间适配器 容器 string vector list track ...
2020-03-10 21:30:31
326
原创 C面向接口编程和C多态
数组指针和指针数组的区别 指针数组(多个指针变量) int *p[3]表示一个一维数组内存放三个指针变量,分别是p[0]、p[1]、p[2] 数组指针(行指针) int (*p)[]; int a[3][4]; p=a;//将二维数组首地址a[0][0]赋给p p++;//p=p+1,p跨过a[0][]指向a[1][]*************************** 数组指针...
2020-02-29 17:46:30
181
原创 纯虚函数和抽象类
基本概念 注意:1、纯虚函数可以有函数体,但是必须定义在类外 2、一个基类中说明具有纯虚函数,该基类为抽象类,如果派生类中没有对基类的纯虚函数进行定义,那么派生类自身也就成了一个抽象类。 1)、不能建立抽象对象 2)、不能从具体类派生出抽象类 3)、抽象类不能作为函数的参数类型,函数的返回值和显示转换的类型 4)、可以声明指向抽象类的指针或引用,此指针可以指向其派生类,进而实现多态 5)、派生...
2020-02-29 16:16:36
653
原创 多态
前言 父类和子类拥有相同名字的函数print() Paren *p=&c(child 对象) p->print();//打印的是父类函数 //现象产生的原因 //赋值兼容性原则遇上函数重写出现的一个现象 //1 没有理由报错 //2 对被调用函数来讲,在编译器编译期间,我就确定了,这个函数的参数是p,是Parent类型的。。。 //3静态链编 面向对象新需求 编译器的做法...
2020-02-28 20:48:29
180
原创 继承和派生
一 继承关系举例 万事万物中皆有继承,是重要的现象 两个案例:1)植物继承图;2)程序员继承图 继承相关概念 派生类的定义 注意:C++中的继承方式(public、private、protected)会影响子类的对外访问属性。 继承重要说明 1、子类拥有父类的所有成员变量和成员函数 2、子类可以拥有父类没有的方法和属性 3、子类就是一种特殊的父类 4、子类对象可以当作父类对象使用 派生类的访...
2020-02-27 12:48:14
165
原创 运算符重载
一 概念 1为什么会用运算符重载机制 用复数类举例/ /Complex c3 =c1 + c2; //原因 Complex是用户自定义类型,编译器根本不知道如何进行加减 //编译器给提供了一种机制,让用户自己去完成,自定义类型的加减操作。。。。。 //这个机制就是运算符重载机制 2 运算符重载的本质是一个函数 全局函数、类成员函数方法实现运算符重载步骤 1)要承认操作符重载是一个函数,写出...
2020-02-27 10:23:48
203
原创 友元
友元函数 注意:1.不是成员函数,无this指针 2.破坏了类的封装性 1、声明位置和public和private无关 2、友元函数参数一般包括(友元类指针,要赋的值) 友元函数作用:全局函数访问类的私有变量 二 友元类 Ø 若B类是A类的友员类,则B类的所有成员函数都是A类的友员函数 Ø 友员类通常设计为一种对数据操作或类之间传递消息的辅助类 思考:为什...
2020-02-26 13:41:31
337
原创 C++面向对象模型初探
前言 C++对象模型可以概括为以下2部分: 语言中直接支持面向对象程序设计的部分,主要涉及如构造函数、析构函数、虚函数、继承(单继承、多继承、虚继承)、多态等等。 对于各种支持的底层实现机制。 在c语言中,“数据”和“处理数据的操作(函数)”是分开来声明的, 也就是说,语言本身并没有支持“数据和函数”之间的关联性。在c++中, 通过抽象数据类型(abstract data type...
2020-02-26 12:02:00
211
原创 静态成员变量与成员函数
一 静态成员变量 1)定义静态成员变量 Ø 关键字 static 可以用于说明一个类的成员, 静态成员提供了一个同类对象的共享机制 Ø 把一个类的成员说明为 static 时,这个类无论有多少个对象被创建,这些对象共享这个static 成员 Ø 静态成员局部于类,它不是对象成员 2)访问静态成员变量的方法 cout << counter::Smem << ...
2020-02-26 11:13:41
147
原创 对象的动态建立和释放
1 new和delete基本语法 1)在软件开发过程中,常常需要动态地分配和撤销内存空间,例如对动态链表中结点的插入与删除。在C语言中是利用库函数malloc和free来分配和撤销内存空间的。C++提供了较简便而功能较强的运算符new和delete来取代malloc和free函数。 注意: new和delete是运算符,不是函数,因此执行效率高。 2)虽然为了与C语言兼容,C++仍保留mal...
2020-02-25 19:08:36
290
原创 多个对象构造和析构
一 对象初始化列表 1)对象初始化列表出现原因 1.必须这样做: 如果我们有一个类成员,它本身是一个类或者是一个结构,而且这个成员它只有一个带参数的构造函数,没有默认构造函数。这时要对这个类成员进行初始化,就必须调用这个类成员的带参数的构造函数, 如果没有初始化列表,那么他将无法完成第一步,就会报错。 2、类成员中若有const修饰,必须在对象初始化的时候,给const int m 赋值 当类...
2020-02-25 18:47:11
320
原创 深拷贝和浅拷贝
一 浅拷贝问题抛出与分析 默认复制构造函数可以完成对象的数据成员值简单的复制 对象的数据资源是由指针指示的堆时,默认复制构造函数仅作指针值复制 原因:未重新开辟内存 浅拷贝会带来野指针的问题,解决方法:手动写拷贝函数(深拷贝),重新开辟内存 ...
2020-02-25 18:21:39
206
原创 对象的构造与析构
一 前言 创建一个对象时,常常需要作某些初始化的工作,例如对数据成员赋初值。注意,类的数据成员是不能在声明类时初始化的。 原因:类相当于一个模板,是一种新数据类型,而非变量,当程序声明一个类,未申 请存储空间,只有当这个类定义对象时才申请空间 为了解决这个问题,C++编译器提供了构造函数(constructor)来处理对象的初始化。构造函数是一种特殊的成员函数,与其他成员函数不同,不需要用户...
2020-02-25 11:48:10
382
原创 类和对象
一 基本概念 1.类、对象、成员变量(属性)、成员函数 2.面向对象三大概念:封装、继承、多态 3.编程实践:类的定义和对象的定义,对象的使用 二 类的封装 (1)封装(Encapsulation) A)封装,是面向对象程序设计最基本的特性。把数据(属性)和函数(操作)合成一个整体,这在计算机世界中是用类与对象实现的。 B)封装,把客观事物封装成抽象的类,并且类可以把自己的数据和方法只...
2020-02-25 10:03:51
130
转载 TCP/IP协议分析
TCP/IP协议是一系列网络协议的总和,是网络通信架构的核心,它定义了电子设备如何接入因特网,以及数据如何在它们之间传输。TCP/IP 协议采用4层结构,分别是应用层、传输层、网络层和链路层,每一层都呼叫它的下一层所提供的协议来完成自己的需求。清楚TCP/IP的工作原理,通俗一点讲就是,一个主机的数据要经过哪些过程才能发送到对方的主机上 一. 首先我们梳理一下每层模型的职责: 链路层:对0和1进行...
2019-12-23 16:55:56
577
原创 cvte面试c++题总结二
C和C++的区别 1.面向过程和面向对象的区别 (1)面向过程:面向过程编程就是分析出解决问题的步骤,然后把这些步骤一步一步的实现,使用的时候一个一个的依次调用就可以了。 (2)面向对象:面向对象编程就是把问题分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描述某个事物在整个解决问题的步骤中的行为。 举个例子:(玩五子棋) (1)用面向过程的思想来考虑就是:开始游戏,白子先走,绘制画...
2019-12-18 10:51:22
503
原创 cvte面试c++总结
在C++中,源程序变为可执行程序的正确顺序 编辑、编译、链接、执行 虚函数,纯虚函数,多态性 1、纯虚函数(pure virtual)纯虚函数的定义形式:virtual { } = 0;纯虚函数就是基类只声明函数体,没有实现过程。时对子类的约束,是接口继承。 2、虚函数(Impure virtual)虚函数的定义形式:virtual {method body};c++的虚函数是基类提供虚函...
2019-12-17 21:15:00
800
转载 Ubuntu18.04配置YOLO及opencv3.4.2
Ubuntu18.04配置YOLO及opencv3.4.2 为了用YOLO,要配置opencv以便显示图片 可以参考以下链接 https://blog.youkuaiyun.com/weixin_41851439/article/details/88712465 https://www.cnblogs.com/aacirq/p/9694951.html 这里我也没明白为什么一定要通过sourse安装,直接...
2019-11-20 20:09:01
585
转载 ubuntu18.03+gtx1060显卡驱动+CUDA10+cudnn7.5
ubuntu18.03+gtx1060显卡驱动+CUDA10+cudnn7.5 在安装显卡之前请先把ubuntu 18.04系统提前安装好。 需要准备的资料: NVIDIA 驱动 下载驱动 驱动到NVIDIA官网下载,在此下载页面选择合适的显卡,切记选择.run文件。 安装驱动 1 安装依赖 sudo apt-get install gcc g++ make //因为安装过程需要这些工...
2019-11-19 18:35:37
1919
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅