- 博客(23)
- 收藏
- 关注
原创 Minieye笔试总结
首先数组定义有误,应加上类型参数:vector array。其次vector::size_type被定义为unsigned int,即无符号数,这样做为循环变量的i为0时再减1就会变成最大的整数,导致循环失去控制。 2. 机器学习中常用的距离度量 欧式距离 曼哈顿距离 闵可夫斯基距离(闵式距离) 马氏距离 标准欧式距离 汉明距离 杰卡德距离 测地距离(Geodesic Distance) 3.请概述基类以及继承中,有关函数重载、重写与重定义的...
2022-04-07 17:40:18
883
4
原创 C++对象模型和this指针
4.3 C++对象模型和this指针 4.3.1 成员变量和成员函数分开存储 在C++中,类内的成员变量和成员函数分开存储 只有非静态成员变量才属于类的对象上 4.3.2 this指针概念 通过4.3.1我们知道在C++中成员变量和成员函数是分开存储的 每一个非静态成员函数只会诞生一份函数实例,也就是说多个同类型的对象会共用一块代码 那么问题是:这一块代码是如何区分那个对象调用自己的呢? c++通过提供特殊的对象指针,this指针,解决上述问题。this指针指向被调用的成员函数所属的对象 this指针是隐含
2022-04-05 00:19:38
120
转载 构造函数调用规则
4.2.4 构造函数调用规则 默认情况下,c++编译器至少给一个类添加3个函数 1.默认构造函数(无参,函数体为空) 2.默认析构函数(无参,函数体为空) 3.默认拷贝构造函数,对属性进行值拷贝 构造函数调用规则如下: * 如果用户定义有参构造函数,c++不在提供默认无参构造,但是会提供默认拷贝构造 * 如果用户定义拷贝构造函数,c++不会再提供其他构造函数 class Person { public: //无参(默认)构造函数 Person() { cout << "无参构造
2022-04-04 18:54:58
698
原创 C++---函数提高
3.函数提高 3.3.1 函数重载概述 **作用:**函数名可以相同,提高复用性 函数重载满足条件: 同一个作用域下 函数名称相同 函数参数类型不同或者个数不同或者顺序不同 注意:函数的返回值不可以作为函数重载的条件 示例: //函数重载需要函数都在同一个作用域下 void func() { cout << "func 的调用!" << endl; } void func(int a) { cout << "func (int a) 的调用!" <<
2022-04-04 18:54:22
235
原创 C++---对象的初始化和清理
4.2.1 构造函数和析构函数 对象的初始化和清理也是两个非常重要的安全问题 一个对象或者变量没有初始状态,对其使用后果是未知 同样的使用完一个对象或变量,没有及时清理,也会造成一定的安全问题 c++利用了构造函数和析构函数解决上述问题,这两个函数将会被编译器自动调用,完成对象初始化和清理工作。 对象的初始化和清理工作是编译器强制要我们做的事情,因此如果我们不提供构造和析构,编译器会提供 编译器提供的构造函数和析构函数是空实现。 构造函数:主要作用在于创建对象时为对象的成员属性赋值,构造函数由编译
2022-04-04 18:53:56
433
原创 C++---int a; int* a; int** a; int (*a)[]; int (*a)(int)
int a; int* a; int** a; int (*a)[]; int (*a)(int) a) int a;表示一个内存空间,这个空间用来存放一个整数(int); b) int* a;表示一个内存空间,这个空间用来存放一个指针,这个指针指向一个存放整数的空间,即a)中提到的空间; c) int** a;表示一个内存空间,这个空间用来存放一个指针,这个指针指向一个存放指针的空间,并且指向的这个空间中的指针,指向一个整数。也简单的说,指向了一个b)中提到的空间; d) int (a)[4];表示一
2022-04-04 17:59:51
1155
原创 C++--空指针、野指针、常量指针、指针常量
7.4 空指针和野指针 空指针:指针变量指向内存中编号为0的空间 **用途:**初始化指针变量 **注意:**空指针指向的内存是不可以访问的 示例1:空指针 int main() { //指针变量p指向内存地址编号为0的空间 int * p = NULL; //访问空指针报错 //内存编号0 ~255为系统占用内存,不允许用户访问 cout << *p << endl; system("pause"); return 0; } 野指针:指针变量指向非法的内存
2022-04-04 08:44:17
121
原创 C++---引用
2.1引用的基本使用 引用必须初始化后 引用在初始化后不可以改变 int main() { int a = 10; int b = 20; //int &c; //错误,引用必须初始化 int &c = a; //一旦初始化后,就不可以更改 c = b; //这是赋值操作,不是更改引用 cout << "a = " << a << endl; cout << "b = " << b << endl;
2022-04-03 23:54:07
79
原创 内存分区模型new等关键字
C++程序在执行时,将内存大方向划分为四个区域 1.内存分区模型 代码区:存放函数体的二进制代码,有操作系统进行管理 全局区:存放全局变量和静态变量以及常量 栈区:由编译器自动分配释放,分配函数的参数值,局部变量 堆区:由程序员分配和释放,若程序员不释放,程序结束时由操作系统回收 1.1 程序运行前 在程序编译后,生成了exe可执行程序,未执行该程序前分为两个区域 代码区:‘ 存放CPU执行的机器指令 代码区是共享的,共享的目的是对于频繁被执行的程序,只需要在内存中有一份代码即可 代码区是只读的,使其只
2022-04-03 23:24:54
101
原创 Map集合
一、Map集合 Collection:单独存在的 Map:双列集合 键值对 常用子类 Map常用子类 HashMap:由于要保证键的唯一、不重复,需 要重写键的hashCode()方法、equals()方法。 LinkedHashMap:HashMap下有个LinkedHashMap,存储数据采用的哈希表结构+链表结构。通过链表结构可以保证元素的存取顺序一致;通过哈希表结构可以保证的键的唯一、不重复,需要重写键的hashCode()方法、equals()方法。 ...
2022-03-30 10:59:53
82
原创 List、Set、数据结构、Collections
一、List的子类 1、ArrayList集合 java.util.ArrayList 集合数据存储的结构是数组结构。元素增删慢,查找快,由于日常开发中使用最多的功能为 查询数据、遍历数据,所以 ArrayList 是最常用的集合。 许多程序员开发时非常随意地使用ArrayList完成任何需求,并不严谨,这种用法是不提倡的。 2、 LinkedList集合 LinkedList是一个双向链表,方便元素添加、删除的集合,但是查询慢,增删快 public void addFirst(E e):将指定元素插入
2022-03-30 10:53:30
93
原创 Mysql概述
DB:数据库(database):存储数据的“仓库”。它保存了一系列有组织的数据。 DBMS:数据库管理系统(Database Management System)。数据库是通过DBMS创建和操作的容器 SQL:结构化查询语言(Structure Query Language):专门用来与数据库通信的语 言。 SQL语句的分类 DML:DML(Data Manipulation Language):数据操纵语句,用于添加、删除、修改、查询数据库记录,并检查数据完整性 INSERT、UPDATE、DE.
2022-03-29 11:40:59
430
原创 Mysql乐观锁&悲观锁
乐观锁&悲观锁 1.并发控制 当程序中可能出现并发的情况时,就需要保证在并发情况下数据的准确性,以此确保当前用户和其他用户一起操作时,所得到的结果和他单独操作时的结果是一样的。这就叫做并发控制。并发控制的目的是保证一个用户的工作不会对另一个用户的工作产生不合理的影响。 没有做好并发控制,就可能导致脏读、幻读和不可重复读等问题。 常说的并发控制,一般都和数据库管理系统(DBMS)有关。在 DBMS 中并发控制的任务,是确保多个事务同时增删改查同一数据时,不破坏事务的隔离性、一致性和数据库的统一性。
2022-03-29 10:31:05
1248
原创 Java--多态
public class Test { public static void main(String[] args) { // 多态形式,创建对象 Cat c = new Cat(); Dog d = new Dog(); // 调用showCatEat showCatEat(c); // 调用showDogEat showDogEat(d); /* 以上两个方法, 均可以被showAnimalEat(Animal a)方法所替代 而执行效果一致 */ showAnimalEat(c); showAnima
2022-03-18 21:28:14
72
原创 Java--接口
接口 1.概述 接口的内部主要就是封装了方法 1.2定义格式 public interface 接口名称 { // 抽象方法 // 默认方法 // 静态方法 // 私有方法 } 含有抽象方法 抽象方法:使用 abstract 关键字修饰,可以省略,没有方法体。该方法供子类实现使用。 public interface InterFaceName { public abstract void method(); } 含有默认方法和静态方法 私有方法:使用 private 修饰,供接口中的默认方法或者静态方法
2022-03-18 20:28:35
83
原创 Java--Collection集合
Collection集合 1.1 集合概述 集合和数组都是容器 数组长度是固定的。集合长度可变。 数组储存的是同一类型元素,集合储存的是对象。 1.2集合框架 Collection:单列集合类的根接口 它有两个重要的子接口,分别是java.util.List和java.util.Set。其中,List的特点是元素有序、元素可重复。Set的特点是元素无序,而且不可重复。List接口的主要实现类有java.util.ArrayList和java.util.LinkedList,Set接口的主要实现类有ja
2022-03-18 17:00:56
158
原创 继承、super、this、抽象类
继承的格式 通过 extends 关键字,可以声明一个子类继承另外一个父类,定义格式如下: class 父类 { ... } class 子类 extends 父类 { ... } 1.5继承后的特点–构造方法 当类之间产生了关系,其中各类中的构造方法,又产生了哪些影响呢? 首先我们要回忆两个事情,构造方法的定义格式和作用。 构造方法的名字是与类名一致的。所以子类是无法继承父类构造方法的。 构造方法的作用是初始化成员变量的。所以子类的初始化过程中,必须先执行父类的初始化动作。子类的构 造方法中默认有
2022-03-18 15:26:16
71
原创 static关键字
静态方法调用的注意事项: 静态方法可以直接访问类变量和静态方法 静态方法不能直接访问普通成员变量或者成员方法。成员方法可以直接访问类变量或静态方法。 静态方法中,不能使用this关键字。 调用格式 且建议通过类名直接访问 // 访问类变量 类名.类变量名; // 调用静态方法 类名.静态方法名(参数); 静态代码块 执行:随着类的加载而执行且执行一次,优先于main方法和构造方法的执行。 public class Game { public static int number; public sta.
2022-03-18 14:47:40
69
原创 Java构造方法
package base; public class student_demo { public static void main(String[] args) { student s1 = new student(); s1.show(); } } package base; public class student { public student() { System.out.println("构造方法");
2022-03-11 12:27:08
180
原创 类与对象、封装、构造方法
1.1面向对象思想概述 概述 Java语言是一种面向对象的程序设计语言,而面向对象思想是一种程序设计思想,我们在面向对象思想的指引下,使用Java语言去设计、开发计算机程序。 这里的对象泛指现实中一切事物,每种事物都具备自己的属性和行为。面向对象思想就是在计算机程序设计过程中,参照现实中事物,将事物的属性特征、行为特征抽象出来,描述成计算机事件的设计思想。 它区别于面向过程思想,强调的是通过调用对象的行为来实现功能,而不是自己一步一步的去操作实现。 举例 洗衣服: 面向过程:把衣服脱下来–>找一个盆
2022-03-09 22:30:00
62
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人